我有
"autoload": {
"psr-4": {
"ACME": "src/",
},
"classmap": ["src/"],
"files": ["mapper.php"],
"exclude-from-classmap": ["mapper.php"]
},
在 mapper.php
中,我试图为一些遗留的东西提供不同的命名空间。
<?php
class_alias(Some_Class::class, 'Cool\NameSpaced\Class');
我认为构建失败是因为 mapper.php
正在使用 src/
中的类,并且它们尚未被 composer 加载。有办法做到这一点吗?
我运行的命令是 composer install --optimize-autoloader --no-dev
最佳答案
我试过你的例子,效果很好。
这可能与您使用的 composer 命令有关。 试试这个:
composer dump-autoload
这将刷新 autoload
部分的所有内容。
这是按文件列出的安装文件:
composer.json
{
"autoload": {
"classmap": ["src/"],
"files": ["mapper.php"]
}
}
mapper.php
<?php
class_alias(Some_Class::class, 'Cool\NameSpaced\Class');
index.php
<?php
require __DIR__ . '/vendor/autoload.php';
var_dump(class_exists(Some_Class::class));
var_dump(class_exists('Cool\NameSpaced\Class'));
在 CLI 中测试
$ composer dump-autoload
$ php index.php
bool(true);
bool(true);
如何找出别名作品?
commposer.json
{
"autoload": {
"classmap": ["src/"]
}
}
在 CLI 中测试
$ composer dump-autoload
$ php index.php
bool(true);
bool(false);
关于php - 加载类映射后 Composer 自动加载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46815613/