php:composer 自动加载不适用于 src 文件夹内的多个目录
php:composer auto loading not working with multiple directories inside src folder
这是我的文件夹结构
在我的 package/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()
行
中收到以下错误
Fatal error: Uncaught Error: Class 'Test\First' not found
但是 class 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
.
阅读有关 autoload section of composer.json
的更多信息。
您只声明了一个前缀位于 src
。再添加一个:
"autoload": {
"psr-0": {
"HelloWorld": "src/",
"Test": "src/"
}
}
另请注意,当您使用命名空间时,PSR-4 更适合:
"autoload": {
"psr-4": {
"HelloWorld\": "src/HelloWorld/",
"Test\": "src/Test"
}
}
这是我的文件夹结构
在我的 package/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()
行
Fatal error: Uncaught Error: Class 'Test\First' not found
但是 class 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
.
阅读有关 autoload section of composer.json
的更多信息。
您只声明了一个前缀位于 src
。再添加一个:
"autoload": {
"psr-0": {
"HelloWorld": "src/",
"Test": "src/"
}
}
另请注意,当您使用命名空间时,PSR-4 更适合:
"autoload": {
"psr-4": {
"HelloWorld\": "src/HelloWorld/",
"Test\": "src/Test"
}
}