2015年7月26日 星期日

Laravel, 自動載入自訂 Namespace

在 Laravel 5.0 中,若是在預設的 app 目錄下,建立自訂 Namespace 或檔案,將會自動載入。
但若是自訂的 Namespace 或是檔案,是在與 app 同一層的目錄下,則必須自行設定,才會自動載入。

修改 composer.json 檔案,在 "autoload" 的下面,加上自訂的項目。下面的範例中,新增了要自動載入的項目 "myFunction.php""Nspace" 的 namespace。

"autoload": {
        "classmap": [
            "database"
        ],
        "files": [
            "myfolder/myFunction.php"
        ],

        "psr-4": {
            "App\\": "app/",
            "Nspace\\": "Nspace/"
        }
    },


然後,執行 composer dump-autoload,其將在 vendor/composer 的目錄下,產生對應的 autoload 的檔案,例如 autoload_psr4.phpautoload_files.php 等。

其於 autoload_psr4.php 中,新增一行
  'Nspace\\' => array($baseDir . '/Nspace'),

瞭解後,亦可自行手動加入吧。

後記 (2016-10-28)

雖然,經測試後,這樣做可以自動載入自訂的 Namespace,不過,我後來都偷懶,直接放在 APP的目錄下,比較省事。

1 則留言:

henry 提到...

謝謝你的分享,解決了我的疑惑~~