我有
"autoload": {
"psr-4": {
"ACME": "src/",
},
"classmap": ["src/"],
"files": ["mapper.php"],
"exclude-from-classmap": ["mapper.php"]
},
在mapper.php
中,我正在尝试为一些遗留的东西提供不同的命名空间。
<?php
class_alias(Some_Class::class, 'CoolNameSpacedClass');
我认为这无法构建,因为mapper.php
正在使用src/
类,并且作曲家尚未加载它们。有没有办法做到这一点?
我运行的命令是composer install --optimize-autoloader --no-dev
我已经尝试过你的例子,它运行良好。
它可能与您使用的作曲家命令有关。试试这个:
composer dump-autoload
这将刷新autoload
部分中的任何内容。
以下是逐个文件的安装文件:
composer.json
{
"autoload": {
"classmap": ["src/"],
"files": ["mapper.php"]
}
}
mapper.php
<?php
class_alias(Some_Class::class, 'CoolNameSpacedClass');
index.php
<?php
require __DIR__ . '/vendor/autoload.php';
var_dump(class_exists(Some_Class::class));
var_dump(class_exists('CoolNameSpacedClass'));
在 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);