psr-0 自动加载与作曲家不工作,但它与 psr-4 自动加载完美配合
psr-0 autoloading with composer not wotking, but it works perfectly with psr-4 autoloading
我尝试使用 PSR-0 自动加载文件,但它没有自动加载该文件。我尝试使用 PSR-4 自动加载相同的文件。使用 PSR-4,它工作得很好。 PSR-0 所需的文件夹结构有什么不同吗?
即使保留 What is the difference between PSR-0 and PSR-4?
中提到的文件夹结构,我也无法使 PSR-0 工作
这是我的文件夹结构。
Test
--Package
--Test.php
我在 Test.php
:
<?php
namespace Test\Package;
class Test
{
public function __construct()
{
echo "In Test class";
}
}
和composer.json
看起来像
{
"autoload": {
"psr-0": {
"Test\Package\": "Test/Package/"
}
}
}
与直觉相反,the composer documentation on PSR-0 包含一个部分路径,使 PSR-0 似乎需要包的路径才能加载 classes。实际上,PSR-0 构建基于包的路径,因此如果代码位于 src/
或 lib/
之类的文件夹中,它只需要指定一个路径,而不是 not 命名空间路径的一部分。如果基于命名空间的目录结构在与 composer.json
相同的目录中开始,则不需要路径。
假设问题中指定的目录结构,有几种方法可以使用 composer 加载此 class。
PSR-0
{
"autoload": {
"psr-0": { "Test\Package\": "" }
}
}
请注意,尽管代码位于 Test/Package/
中,但此文件夹未 在 PSR-0 中指定。
PSR-4
对于 PSR-4 自动加载,包源的路径必须出现在 composer.json
文件中。
{
"autoload": {
"psr-4": { "Test\Package\": "Test/Package/" }
}
}
类图
当存在加载未组织到典型命名空间文件夹树中的 class 的要求时,也可以简单地指定要在其中搜索 class 的文件夹列表es 使用 classmap
数组。
{
"autoload": {
"classmap": [ "Test/Package/" ]
}
}
但是,一般来说,使用 PSR-0 或 PSR-4 会提供更简单的体验,因为 classmap
方法需要单独指定每个文件夹。
我尝试使用 PSR-0 自动加载文件,但它没有自动加载该文件。我尝试使用 PSR-4 自动加载相同的文件。使用 PSR-4,它工作得很好。 PSR-0 所需的文件夹结构有什么不同吗?
即使保留 What is the difference between PSR-0 and PSR-4?
中提到的文件夹结构,我也无法使 PSR-0 工作这是我的文件夹结构。
Test
--Package
--Test.php
我在 Test.php
:
<?php
namespace Test\Package;
class Test
{
public function __construct()
{
echo "In Test class";
}
}
和composer.json
看起来像
{
"autoload": {
"psr-0": {
"Test\Package\": "Test/Package/"
}
}
}
与直觉相反,the composer documentation on PSR-0 包含一个部分路径,使 PSR-0 似乎需要包的路径才能加载 classes。实际上,PSR-0 构建基于包的路径,因此如果代码位于 src/
或 lib/
之类的文件夹中,它只需要指定一个路径,而不是 not 命名空间路径的一部分。如果基于命名空间的目录结构在与 composer.json
相同的目录中开始,则不需要路径。
假设问题中指定的目录结构,有几种方法可以使用 composer 加载此 class。
PSR-0
{
"autoload": {
"psr-0": { "Test\Package\": "" }
}
}
请注意,尽管代码位于 Test/Package/
中,但此文件夹未 在 PSR-0 中指定。
PSR-4
对于 PSR-4 自动加载,包源的路径必须出现在 composer.json
文件中。
{
"autoload": {
"psr-4": { "Test\Package\": "Test/Package/" }
}
}
类图
当存在加载未组织到典型命名空间文件夹树中的 class 的要求时,也可以简单地指定要在其中搜索 class 的文件夹列表es 使用 classmap
数组。
{
"autoload": {
"classmap": [ "Test/Package/" ]
}
}
但是,一般来说,使用 PSR-0 或 PSR-4 会提供更简单的体验,因为 classmap
方法需要单独指定每个文件夹。