我有
"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 install --optimize-autoloader --no-dev
答案 0 :(得分:3)
我试过你的例子而且效果很好。
它可能与您使用的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'));
$ composer dump-autoload
$ php index.php
bool(true);
bool(true);
commposer.json
{
"autoload": {
"classmap": ["src/"]
}
}
$ composer dump-autoload
$ php index.php
bool(true);
bool(false);