在composer包中自动加载PHP文件

时间:2017-04-24 12:55:20

标签: php composer-php autoload

我正在尝试创建一个包含src / functions.php的作曲家包,其中包含一些常规函数。我在composer.json中有以下内容使其自动加载:

"autoload": {
    "files": ["src/functions.php"]
}

当我将此包导入项目时,它将尝试在当前项目(本地)中加载src / functions.php而不是导入的包。有没有办法确保导入时加载正确的文件(./vendor/bla/src/functions.php)?

1 个答案:

答案 0 :(得分:2)

自动加载不适用于加载所有内容。如果src/functions.php包含类,请确保它已正确命名,并且我认为没有理由说自动加载器会选择本地类而不是包。如果你对包和项目中的代码使用相同的命名空间,那么基本上你应该停止这样做。

如果src/functions.php只是一堆函数,那么我强烈建议重构代码并将它们包装在正确的命名空间类中。您可以使用static methods函数,因此从使用角度来看,基本上不会有太多变化。

修改

完成重构后,请将composer.json从您显示的内容更改为:

"autoload": {
    "classmap": ["src/"]
}