安裝完設定主目錄到documentRoot
資料夾
- storage:編譯後產生的檔案、log檔案,設定為可以寫入的權限
- bootstrap:框架啟動加載的檔案
- cache:加載後產生的檔案
- vendor:composer命令模組
- app:系統核心代碼
開權限
- chmod -R 777 storage
- chmod -R 777 bootstrap/cache
Artisan工匠
- symfony console元件為基礎架構
- php artisan list
- php artisan --version
- php artisan make:command SendEmails
- php artisan make:controller CustomerController
定義路由
- 與客戶端互動
- 用routes/web.php定義web相關的routes
- 用routes/api.php定義api相關的routes
路由動詞
- get/post/delete/put
- 符合所有any
- 符合一部分match
- url helper透過url()轉向
Laravel Eloquent
繼承了Eloquent就相當於幹了很多事情
中間流(Builder)
- 建立了一個對象,在中間不斷地去改變它
- 用::訪問某個function,無論是否為static,__construct()都不會被調用
- Builder對象不能直接存取Article對象,需要轉成終結對象,才能調用到裡面的屬性
模型關係
ORM
PHP的問題
- 一個網頁一個PHP:使用漏洞攻擊(MVC)
- 缺乏統一寫法:一個人離開要了解寫法(Framework)
- 每次都從頭開始:開發效率低(不用重新造輪子)
Framework和Library差異
四類Framework
- codeIgniter:支援最廣(適合接案使用)
- laravel:全功能(學習門檻高,底層用symfony)
- slim:簡約(restful API使用)
- phalcon:快速(C語言開發)
Laravel環境難裝
指令很多
- composer:安裝套件
- artisan:cli tool
體驗高手如何寫出OOP
- 把商業邏輯無關又常常用到的功能抽出來
- 套件為主的開發方式,名稱衝突問題(NameSpace)
- ORM:SQL物件化
- Migration:欄位開錯,版本控管
- TDD:先寫測試在寫開發
TDD好處
- 對Spec更加了解
- 不用擔心重構的問題
- 提早發現架構的問題
參考