问题描述
我使用来自作曲家的 c>
我写了自己的自动加载器,但是当我需要 vendor / autoload.php (composer autoload)和我的自动加载器,它将无法工作,直到我在自己的自动加载器中创建类的实例。
I wrote my own autoloader, but when I require vendor/autoload.php (composer autoload) and my autoloader, it won't work until I create instance of a class in my own autoloader.
推荐答案
p> src 目录将在您的项目根目录中。
与 vendor 目录同级别。
The src directory would be in your project root.Its on the same level as vendor directory is.
如果定义
"autoload": { "psr-4": { "DG\\Munchkin\\": "src/DG/Munch/" } }
将不会从 / var / www / html / xxx / vendor / yyy / src / DG / Munch ,
加载类。
this will not load classes from /var/www/html/xxx/vendor/yyy/src/DG/Munch,like you stated.
因为您的项目结构是:
/var/www/html/ +- /xxx (project) - composer.json +- /src +- DG +- Munch +- /vendor - autoload.php +- vendor-projectA +- vendor-projectB +- yyy
$ b b
\DG\Munchkin 命名空间将映射到
The \DG\Munchkin namespace would map to classes inside
code> / var / www / html / xxx / src / DG / Munch ,而不在里面
/var/www/html/xxx/src/DG/Munch and not inside
/ var / www / html / xxx / vendor / yyy / src / DG / Munch 。
/ var / www / html / xxx /?
定义composer.json(/ var / www / html / xxx /的项目:
Define the paths in the composer.json (inside /var/www/html/xxx/) of your project:
"autoload": { "psr-4": { "ProjectRoot\\" : "", "NamspaceInSourceDir\\" : "src/" } }
或在您的index.php或引导期间加载composer autoloader并手动添加路径:
or load the composer autoloader in your index.php or during it's bootstrap and add the paths manually:
$loader = require 'vendor/autoload.php'; $loader->add('Namespace\\Somewhere\\Else\\', __DIR__); $loader->add('Namespace\\Somewhere\\Else2\\', '/var/www/html/xxx');
参考:
这篇关于如何使用Composer从供应商外部自动加载类?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!