【发布时间】:2015-11-11 16:08:33
【问题描述】:
我有一个关于重构旧 PHP 应用程序以兼容 PHP 的 PSR-4 标准的问题。我有一些位于 app/classes/ 文件夹中的类尚未正确命名空间,我希望在调用 composer 的 vendor/autoload.php 时直接自动加载它们。我根据\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>添加了一个命名空间,我尝试在composer的vendor文件夹下创建一个vendor/myapp/classes/src/目录,并执行了dump-autoload命令但无济于事。该类没有加载,作曲家无法弄清楚在哪里可以找到它。有关如何执行此操作的任何指示?
谢谢,
一月
注意事项: -> 我不想将源代码上传到任何可以公开搜索的存储库,例如 Packagist,因为代码仅供内部使用。
编辑: 这是我的 composer.json:
...
"autoload":{
"psr-4": {
"Myapp\\" : "Myapp"
}
},
...
但现在结构看起来像:
->Myapp
-->Classes
--->Module1
---->submodule.php
--->Module2
---->submodule2.php
--->Module3
---->submodule3.php
--->Config
---->config.db.php
->vendor
-->autoload.php
这是我的问题/疑问:
- 当我尝试加载 submodule.php 时,它又会加载 submodule2.php 和 submodule3.php,它会告诉我找不到 submodule3.php。 submodule3.php 的命名空间是 Myapp\Classes\Module3 但它说它没有找到。
- 我想在每次调用 autoload.php 时强制包含 config.db.php
【问题讨论】:
-
请发布您的 composer.json。您需要使用
"psr-4":指令告诉 Composer 在哪里可以找到这些类,例如 getcomposer.org/doc/01-basic-usage.md#autoloading
标签: php composer-php psr-4