php:composer自动加载无法处理src文件夹中的多个目录
这是我的文件夹结构 在我的php:composer自动加载无法处理src文件夹中的多个目录,php,composer-php,autoload,php-7,Php,Composer Php,Autoload,Php 7,这是我的文件夹结构 在我的包/index.php中 require_once 'vendor/autoload.php'; use HelloWorld\SayHello; use Test\First; //works fine SayHello::world(); //returns classnot found error First::sayTest(); 在我的composer.json中,我包含了以下内容 "autoload": { "psr-0": {
包/index.php中
require_once 'vendor/autoload.php';
use HelloWorld\SayHello;
use Test\First;
//works fine
SayHello::world();
//returns classnot found error
First::sayTest();
在我的composer.json中,我包含了以下内容
"autoload": {
"psr-0": {
"HelloWorld": "src/"
}
}
但是我在First::sayTest()
行中遇到了以下错误
致命错误:未捕获错误:找不到类“Test\First”
但是类First.php
存在于src\Test
文件夹下
namespace Test;
class First
{
public static function sayTest()
{
echo 'test';
}
}
您的composer.json包含一些条目,这使得它可以加载HelloWorld,但是对于文件夹“Test”没有这样的条目
也许将First.php复制到HelloWorld文件夹并更改package.index.php中的引用会有所帮助。将composer.json
更改为:
"autoload": {
"psr-4": {
"": "src/"
}
}
然后运行composer dump autoload
重新生成vendor/autoload.php
阅读有关的部分的更多信息。您只声明了一个前缀驻留在src
中。添加另一个:
"autoload": {
"psr-0": {
"HelloWorld": "src/",
"Test": "src/"
}
}
还要注意,当您使用名称空间时,PSR-4更适合:
"autoload": {
"psr-4": {
"HelloWorld\\": "src/HelloWorld/",
"Test\\": "src/Test"
}
}
如何为composer.json中的Test
文件夹创建条目这实际上是一个错误的建议,因为您的自动加载说明所有类都可以在src
中找到,但这对大多数类来说都不正确。您可以根据需要添加任意多的名称空间前缀和目录,任何长度超过“
的都比您的解决方案好。