[英]How to I use Composer to autoload classes from outside the vendor?
我使用來自作曲家的psr-4
自動加載器:
"autoload": {
"psr-4": {
"DG\\Munchkin\\": "src/DG/Munch/"
}
}
這將從/var/www/html/xxx/vendor/yyy/src/DG/Munch
加載類
但是如何從/var/www/html/xxx/
加載類?
我編寫了自己的自動加載器,但是當我需要vendor/autoload.php
(composer自動加載器)和我的自動加載器時,只有在我自己的自動加載器中創建類的實例時,它才起作用。
src
目錄將在您的項目根目錄中。 它與vendor
目錄位於同一級別。
如果您定義
"autoload": {
"psr-4": {
"DG\\Munchkin\\": "src/DG/Munch/"
}
}
如您所述,這不會從/var/www/html/xxx/vendor/yyy/src/DG/Munch
加載類。
因為您的項目結構為:
/var/www/html/
+- /xxx (project)
- composer.json
+- /src
+- DG
+- Munch
+- /vendor
- autoload.php
+- vendor-projectA
+- vendor-projectB
+- yyy
\\DG\\Munchkin
命名空間將映射到內部的類
/var/www/html/xxx/src/DG/Munch
而非內部
/var/www/html/xxx/vendor/yyy/src/DG/Munch
。
但是如何從/ var / www / html / xxx /加載類?
在項目的composer.json中(在/ var / www / html / xxx /內部)定義路徑:
"autoload": {
"psr-4": {
"ProjectRoot\\" : "",
"NamspaceInSourceDir\\" : "src/"
}
}
或在您的index.php或啟動過程中加載composer autoloader,並手動添加路徑:
$loader = require 'vendor/autoload.php';
$loader->add('Namespace\\Somewhere\\Else\\', __DIR__);
$loader->add('Namespace\\Somewhere\\Else2\\', '/var/www/html/xxx');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.