加载classmaps后的composer autoload文件

时间:2017-10-18 17:07:49

标签: php composer-php psr-4

我有

"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

1 个答案:

答案 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'));


在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);