自动加载 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/"]
}
我正在尝试创建一个包含 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/"]
}