2379 views
owned this note
# Laravel 與 MVC
###### tags: `MCL` `web`
綜合來說,[**Laravel**](#Laravel) 是一個以 [**PHP 語言**](#PHP-語言) 為基礎,基於 [**MVC 架構**](#MVC-架構) 所建構而成的[**網頁框架**](#網頁框架)。
啥?
## 網頁框架 ##
先來談重造輪子的問題。輪子代表著某種功能 (或是一個函數),而重造輪子的意思是說:
某種功能已經被其他人實現了,現在自己卻重頭寫起一模一樣的功能!
重造輪子的問題小一點就是花了些時間,可能或多或少會影響主專案的進度;問題大了點就是造出來的輪子有漏洞,還得花更多的時間處理各種錯誤回報。
> 比如說已公認不要重造的輪子:**加密**與**雜湊**。因為一旦寫錯了,問題會沒完沒了。
網頁框架在網頁開發的立場上,就是避免了開發人員再度重造輪子而誕生的產物。他可以幫助開發者快速援引一般網頁中經常使用的功能,並且確保他們可以健康而沒有疑慮地運作。
* 現在不會框架很吃虧嗎 ? https://www.ptt.cc/bbs/Soft_Job/M.1550570313.A.0A0.html
* 新手不建議使用 Laravel ? https://www.ptt.cc/bbs/PHP/M.1499060668.A.A32.html
## MVC 架構 ##
Model-View-Controller 是一種軟體架構模式,把一個軟體系統分成三個基本部份
* 模型 (Model):封裝對資料的處理,包含對資料庫的存取
* 視圖 (View):人機界面,將資料以視覺方式呈現給使用者
* 控制器 (Controller):控制資料流程,處理各項事件並做出回應
三個元件之間的互動方式因為歷史因素衍生出多種版本,最正統的模式如下:
<img src="https://codimd.mcl.math.ncu.edu.tw/uploads/upload_3fd9381def41342cb63b8a58f3fb7368.png" width=300><br><small>Source: Wikipedia</small>
不過 Laravel 使用的 MVC 互動方式跟上述方法不太一樣,他相對接近於以下模式:
<img src="https://codimd.mcl.math.ncu.edu.tw/uploads/upload_e39acc43b9ccd36cb268cb5fdedc5741.png" width=400><br><small>Source: https://blog.pusher.com/laravel-mvc-use/</small>
而搭配路由器與資料庫的互動後,最終整體流動會呈現以下模樣
<img src="https://codimd.mcl.math.ncu.edu.tw/uploads/upload_9f6c30ee9309f6faf04d4809ebfa3f5b.png" width=400><br><small>Source: https://selftaughtcoders.com/from-idea-to-launch/lesson-17/laravel-5-mvc-application-in-10-minutes/</small>
## PHP 語言 ##
整體語言接近 JavaScript,一個同為直譯式、弱型別的語言。
但由於 PHP 的基本寫法與 Laravel 框架下差異太大,故大致了解型態、函數等基本元素如何操作即可,細節建議參考[專為 Laravel 撰寫的 PHP 教材](https://www.slideshare.net/shengyou/2-php-50744556)。
[<img src="https://image.slidesharecdn.com/2-php-150721060534-lva1-app6892/95/php-1-638.jpg?cb=1437460569" style="width: 300px;">](https://www.slideshare.net/shengyou/2-php-50744556)
## Laravel ##
微積分 Python 使用的 Laravel 版本為 5.6
Laravel 算是一個更迭速度高的專案,從去年截至今日又多釋放數個新版本,不過慶幸的是開發團隊在整體架構上並沒有做太多改變 (倒是 PHP 要求版本越來越高就是了),網路上的教學從 5.3 以後的文章依然還具備可閱讀價值。
最保險的上手策略是直接閱讀[官方文件](https://laravel.com),但基本上多數套件的官方文件可能存在下面幾個問題:
1. 標準配備全英文,並隨時穿插著許多可能沒看過得專有名詞。有中文或是名詞解釋算是佛心來著
2. 章法緊實,很適合查詢特定資料用,但是可能不適合做閱讀使用。