我有
"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/