【问题标题】:Composer - Autoload and PSR-0 vs PSR-4Composer - 自动加载和 PSR-0 与 PSR-4
【发布时间】:2014-07-25 14:45:18
【问题描述】:

我开始学习Composer,正在开发一个系统,我将文件核心应用程序文件分开,如下:

/根 |-- /src |-- /应用 |-- /数据库配置 |-- /控制器 |-- /型号 |-- /核心 |-- /帮手 |-- /控制器 |-- /型号

那么,要在 composer.json 文件中设置此设置并访问 /App/Core 的所有类,会是这样吗?

“自动加载”:{ “psr-X”:{ "应用程序\\" : "/src", “核心\\”:“/src” } }

或者有没有更正确的方法?

我还阅读了有关 PSR-0 与 PSR-4 的信息,但我仍然有点怀疑该使用哪一个。在我的情况下,我应该实现什么,PSR-0 或 PSR-4

【问题讨论】:

    标签: php composer-php autoload psr-0 psr-4


    【解决方案1】:

    主命名空间不需要 2 个条目,因此对于 PSR-4 来说是这样的:

        "autoload" : {
            "psr-4" : {
                "MyApp\\" : "/src"            }
        }
    

    只要 src/ 中的所有内容都使用相同的命名空间,这就是您所需要的。让自动加载器完成它的工作。

    至于使用哪个,我会选择 PSR-4,因为在某些时候,预计 PSR-0 将被弃用,并且由于 PSR-4 是向后兼容的,减去旧遗留程序的一些缺陷,因此没有除了您开始使用其中的一些新功能之外,这并没有真正的区别

    【讨论】:

    • 但是在这种情况下,我将创建一个中间目录,例如: /src/Project/App/Controller/ 。是吗?
    • 在 PSR-4 命名空间中没有 src/ = MyApp\。在这种情况下,将第一个命名空间部分视为使用整个路径保存的别名。这不是它的真正用途,但它确实在 PSR-4 中具有这种效果。所以你的路径是 /src/App/Controller 并且在文件中你有命名空间 MyApp\App\Controller;
    猜你喜欢
    • 2015-01-08
    • 2014-03-24
    • 2015-04-20
    • 2018-07-25
    • 2014-08-12
    • 1970-01-01
    • 2015-04-09
    • 2023-04-09
    • 2018-06-01
    相关资源
    最近更新 更多