作曲家自动加载器 psr-0 命名空间

Posted

技术标签:

【中文标题】作曲家自动加载器 psr-0 命名空间【英文标题】:composer autoloader psr-0 namespaces 【发布时间】:2013-08-11 08:21:39 【问题描述】:

我已经创建了一个自定义作曲家包,但我无法为其设置正确的自动加载选项。

我所有的课程都在MyNamespace/Common 命名空间下。例如,为了包含我的ArrayHelper 课程,我确实使用Mynamespace/Common/Helper/ArrayHelper

这是我composer.json的相关部分:

"autoload": 
    "psr-0":  "MyNamespace\\": "" 
 

我已阅读:composer.json / autoload

有什么帮助吗?

【问题讨论】:

【参考方案1】:

您必须导航命名空间的文件位置。

"autoload": 
    "psr-0":  "MyNameSpace": "./<path to your parent directory>" 

例如,这是我的目录结构:

composer.json
source
  \-Data
    |-Controller
    \-Repository

然后,在 composer.json 文件中:

"autoload": 
    "psr-0":  "MyNameSpace": "source/Data" 

然后,我可以在这些命名空间中定义类:

/* namespace for classes in controller directory */
namespace MyNameSpace\Controller;

/* namespace for classes in repository directory */
namespace MyNameSpace\Repository;

【讨论】:

我的包结构类似于 symfony2 组件,所以我必须像这样配置目标目录:getcomposer.org/doc/04-schema.md#target-dir 命名空间定义分隔符应该使用“\”而不是“/”

以上是关于作曲家自动加载器 psr-0 命名空间的主要内容,如果未能解决你的问题,请参考以下文章

psr-0 与作曲家自动加载不工作,但它与 psr-4 自动加载完美配合

PHP使用来自作曲家的自动加载器添加自定义命名空间

使用命名空间自动加载 Composer 和 PSR-0 类

PSR规范

PSR规范

psr规范发展历程