作曲家在加载类映射后自动加载文件



我有

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

相关内容

  • 没有找到相关文章

最新更新