问题 composer autoloader psr-0名称空间


我已经创建了一个自定义编辑器包,但我遇到了为它设置正确的自动加载选项的麻烦。

我所有的课程都在 MyNamespace/Common 命名空间。所以例如包括我的 ArrayHelper 我正在使用的课程 Mynamespace/Common/Helper/ArrayHelper

这是我的相关部分 composer.json

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

我读过这个: composer.json / autoload

有帮助吗?


11955
2017-08-09 11:52


起源



答案:


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

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

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

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

然后,在composer.json文件中:

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

然后,我可以通过PHP调用命名空间

/* namespace for classes in controller directory */
namespace MyNameSpace\Controller
/* namespace for classes in repository directory */
namespace MyNameSpace\Repository

15
2017-08-09 12:06



我的包结构类似于symfony2 compoenents所以我必须配置这样的目标目录: getcomposer.org/doc/04-schema.md#target-dir - brpaz
命名空间定义分隔符应使用“\”而不是“/” - thenetimp
这不是PSR-4吗? - rr-
@ rr-是的,它是! - Adam B
这不应该是PSR-0的公认答案。 - GuyPaddock


答案:


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

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

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

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

然后,在composer.json文件中:

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

然后,我可以通过PHP调用命名空间

/* namespace for classes in controller directory */
namespace MyNameSpace\Controller
/* namespace for classes in repository directory */
namespace MyNameSpace\Repository

15
2017-08-09 12:06



我的包结构类似于symfony2 compoenents所以我必须配置这样的目标目录: getcomposer.org/doc/04-schema.md#target-dir - brpaz
命名空间定义分隔符应使用“\”而不是“/” - thenetimp
这不是PSR-4吗? - rr-
@ rr-是的,它是! - Adam B
这不应该是PSR-0的公认答案。 - GuyPaddock