自动加载 composer 包中的 PHP 文件

Autoloading PHP file in composer package

我正在尝试创建一个包含 src/functions.php 和一些通用功能的作曲家包。我在 composer.json 中有以下内容以使其自动加载:

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

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

自动加载并非用于加载所有内容。如果 src/functions.php 包含 class 只需确保它的命名空间正确,我看不出自动加载器为什么会选择本地 class 而不是包的。如果您在项目中为包和代码使用相同的命名空间,那么基本上您应该停止这样做。

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

编辑

完成重构后,将 composer.json 从您显示的问题更改为:

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