學習composer做了一個測試,實驗使用composer 做外部套件與內部套件的整合管理
1.目錄與檔案
/var/www/html/index.php
/var/www/html/lib
/var/www/html/lib/src
/var/www/html/lib/src/apple.php
這是初始目錄
在/var/www/html/lib
設定一個composer.json
{
"require": {
"guzzlehttp/guzzle": "~6.0",
"facebook/php-sdk-v4": "~5.0"
}
,
"autoload":{
"classmap":[
"src"
]
}
}
require裡面設定的值,是compser官方網站上提供的套件,而在autoload裡面,設定的是自己的套件,範例內我使用了兩個外部套件(guzzlehttp,facebook)跟自己的class,在這裡的設定中,自己的class只要設定目錄,他會遞回引入目錄內的檔案,你不需要指定檔案,如果要指定檔案的話,請設定為files.
2.執行composer install
bash~/var/www/html/lib> composer install
這時候 目錄改變了
增加了vendor 資料夾
/var/www/html/lib/vendor
3.引入autoload.php在
/var/www/html/index.php內 引入autoload.php
require ('lib/vendor/autoload.php');
$appleObj = new src\Apples\Apples();
$appleObj->eat();
apple.php內容
–/var/www/html/lib/src/apple.php
namespace src\Apples;
class Apples {
public function eat()
{
echo "eat apple";
}
}
output
eat apple
composer 可以整合外部套件跟內部class做一個autoload的動作,不需要分門別類設定很多個資料夾與compser.json,只要通通整合在一起就可以了
而且compser本身也會自動設定autoload的路徑,自動對所有的檔案做遞回引用,非常的方便
如果不知道怎樣new一個整合後的class,可以參考/var/www/html/lib/vendor/composer/autoload_classmap.php
裡面會顯示
return array(
‘src\\Apples\\Apples’ => $baseDir . ‘/src/apple.php’,
);
左邊的index 就是你需要呼叫class路徑了
之後再不用寫很多的require了,一個compser install就搞定了,如果增加了新的程式與目錄在src內,只要用compser update就可以了