Laravel – Autoload 機制

Laravel 的 auto-load 是有依循著 PSR-0 標準,其命名空間 (namespace ) 被定義在核心目錄 (/laravel/autolader.php ) 裡,整個專案的宣告處在啟始檔 (/application/start.php) 中,要增加新的類別直接在該檔加入即可,請記得要依循 PSR-0 的標準哦。而 Laravel 可以加入的類型分為四種:map、directaries、namespaces 以及 underscared。

map

這個是 Larevel autoload 的基本方法,就是引入單一檔案 ,採用 key-value 的陣列格式寫入:

要使用 Mosil 這個類別(class)只要這麼寫即可

 

directaries

顧名思義,這個方法就是將整個目錄裡的所有物件檔都納入,,省去我們要一個一個檔案引入的麻煩,而搜尋目錄裡的檔案命名規則請記得依循著 PSR-0 規範。看到 start.php 中,預設已經先將 models 以及 libraries 兩個目錄放進來了。

 

namespaces

這個指的就是自動載入命名空間 (namespace) 啦~

 

underscared

最後這個就比較特別一點了,在過去沒有 namespace 的時期(PHP 5.3 之前),有許多專案在命名檔案目錄時都會用到底線 (“_”) 做為區隔,可是底線在 namespace 中是沒有意義的,所以我們可以將這類的物件用下面這樣的方式引入:

這是我們呼叫一個物件 Mosil_Blog_Autoload 這,系統就會載入 /bundles/mosil/blog/autoload.php 這個檔案。

 

有了這些概念後,這樣我們在寫程式時,不論是在純 PHP 的環境直接用 __autoload  或是在 Laravel 框架裡加入 Autoloader,都能大大地為我們減少過去得在檔案的一端,寫一堆引入指令 (include、include_once、require、require_once) 的狀況!

Loading Facebook Comments ...

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *