這篇文章主要介紹了關於使用Composer自動載入php命名空間 ,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
上一篇介紹了php的命名空間,但是每次都要使用一個spl_autoload_register()或autoload()方法,每個要使用命名空間的地方都要加這個方法太麻煩,有沒有簡單的方法呢?有,可以使用composer自動載入命名空間。
要在php項目中使用包依賴管理工具composer首先得安裝,這個自行搜尋,就不多說了。安裝之後再項目根目錄下建立一個composer.json檔案。
目錄結構如:
composer.json相當於是composer的設定檔.
composer.json
{ "require" : { "monolog/monolog" : "1.2.*" }, "autoload" : { "psr-4" : { "Test\\" : "vendor/test1/", "Demo\\" : "vendor/test2/" } }}
這個設定檔中有一個autoload段,其中有個psr-4,psr-4是一個基於psr-4(http://www.php-fig.org/psr/psr-4/)規則的類庫自動載入對應關係,只要在其後的對象中,以 “命名空間”: “路徑” 的方式寫入自己的類庫資訊即可。
修改完成後,只要執行一下composer update,對應的目錄結構如。
分別修改 vendor/test1/test.php vendor/test2/test.php
舊 vendor/test1/test.php
<?phpnamespace vendor/test1;class Test{ public function path(){ echo __DIR__."<br>"; }}
新 vendor/test1/test.php
<?phpnamespace Test;class Test{ public function path(){ echo __DIR__."<br>"; }}
vendor/test2/test.php同上,要改成composer.json autoload 對應的命名空間
紅框為命名空間,籃筐為命名空間對應的路徑
在index.php加入:require_once DIR.’/vendor/autoload.php’;
index.php
<?php require_once __DIR__.'/vendor/autoload.php'; $test = new \Test\Test(); $test->path(); $test2 = new \Demo\Test(); $test2->path();
輸出如下: