簡體   English   中英

如何使用Composer從供應商外部自動加載類?

[英]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');

引用: https : //getcomposer.org/doc/04-schema.md#autoload

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM