首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >psr-0自编曲不作曲,但它与psr-4自调式配合得很好。

psr-0自编曲不作曲,但它与psr-4自调式配合得很好。
EN

Stack Overflow用户
提问于 2016-06-29 06:18:31
回答 1查看 375关注 0票数 1

我试图用PSR-0自动加载一个文件,但它不是自动加载该文件。我在PSR-4自动加载下尝试了相同的文件。与PSR-4,它是完美的工作。PSR-0所需的文件夹结构有什么不同吗?

即使保持PSR-0和PSR-4有什么区别?中提到的文件夹结构,我也无法使PSR-0工作。

这是我的文件夹结构。

代码语言:javascript
复制
Test
    --Package
        --Test.php

我在Test.php

代码语言:javascript
复制
<?php
namespace Test\Package;

class Test
{
    public function __construct()
    {
        echo "In Test class";
    }
}

composer.json看起来就像

代码语言:javascript
复制
{
  "autoload": {

    "psr-0": {
            "Test\\Package\\": "Test/Package/"
             }
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-22 21:25:10

与直觉相反,关于PSR-0的作曲家文档包含一个部分路径,这使得PSR-0似乎需要一个到包的路径才能加载类。实际上,PSR-0基于包构造路径,因此它只需要一个指定的路径,如果代码驻留在不属于命名空间路径的文件夹(如src/lib/ )中。如果基于命名空间的目录结构开始于与composer.json相同的目录,则不需要路径。

假设问题中指定了目录结构,有几种方法可以使用composer加载该类。

PSR-0

代码语言:javascript
复制
{
  "autoload": {
    "psr-0": { "Test\\Package\\": "" }
  }
}

请注意,即使代码位于Test/Package/中,此文件夹是而不是PSR-0中指定的

PSR-4

对于PSR-4自动加载,到包源的路径必须出现在composer.json文件中。

代码语言:javascript
复制
{
  "autoload": {
    "psr-4": { "Test\\Package\\": "Test/Package/" }
  }
}

类映射

当需要加载未组织到典型命名空间文件夹树中的类时,也可以简单地指定使用classmap数组搜索类的文件夹列表。

代码语言:javascript
复制
{
  "autoload": {
    "classmap": [ "Test/Package/" ]
  }
}

但是,一般来说,使用PSR-0或PSR-4将提供更容易的体验,因为classmap方法要求每个文件夹都单独指定。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38091718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档