如何使用 Composer 从供应商外部自动加载 类?
How to use Composer to autoload classes from outside the vendor?
我使用来自 composer 的 psr-4
自动加载器:
"autoload": {
"psr-4": {
"DG\Munchkin\": "src/DG/Munch/"
}
}
这会从 /var/www/html/xxx/vendor/yyy/src/DG/Munch
加载 classes
但是如何从 /var/www/html/xxx/
加载 classes?
我写了我自己的自动加载器,但是当我需要 vendor/autoload.php
(作曲家自动加载)和我的自动加载器时,它不会工作,直到我在我自己的自动加载器中创建 class 的实例。
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
命名空间将映射到 类 inside
/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 或 bootstrap 期间加载作曲家自动加载器并手动添加路径:
$loader = require 'vendor/autoload.php';
$loader->add('Namespace\Somewhere\Else\', __DIR__);
$loader->add('Namespace\Somewhere\Else2\', '/var/www/html/xxx');
我使用来自 composer 的 psr-4
自动加载器:
"autoload": {
"psr-4": {
"DG\Munchkin\": "src/DG/Munch/"
}
}
这会从 /var/www/html/xxx/vendor/yyy/src/DG/Munch
但是如何从 /var/www/html/xxx/
加载 classes?
我写了我自己的自动加载器,但是当我需要 vendor/autoload.php
(作曲家自动加载)和我的自动加载器时,它不会工作,直到我在我自己的自动加载器中创建 class 的实例。
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
命名空间将映射到 类 inside
/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 或 bootstrap 期间加载作曲家自动加载器并手动添加路径:
$loader = require 'vendor/autoload.php';
$loader->add('Namespace\Somewhere\Else\', __DIR__);
$loader->add('Namespace\Somewhere\Else2\', '/var/www/html/xxx');