【问题标题】:Zend Project architectureZend 项目架构
【发布时间】:2017-02-16 10:41:03
【问题描述】:

我目前正在将 Zend 3 用于一个项目(或一系列项目)。为了避免每个项目有多个 vendor 文件夹,我想在每个项目运行的根级别有一个 vendor 文件夹。

在我的应用程序/public/index.php 文件中,我更改了这一行:

include __DIR__ . '/../vendor/autoload.php';

到这里:

include __DIR__ . '/../../shared/vendor/autoload.php';

当我这样做时,我看到了这个错误:

致命错误:无法初始化带有消息模块(应用程序)的未捕获异常 'Zend\ModuleManager\Exception\RuntimeException。在 C:\Users\b28934\Documents\server\UwAmp\www\zf3\app\vendor\zendframework\zend-modulemanager\src\ModuleManager.php 第 203 行"

有什么建议吗?我的composer.json 文件中是否缺少某些内容?

【问题讨论】:

    标签: php zend-framework composer-php zend-framework-mvc zend-framework3


    【解决方案1】:
    1. 首先,所有项目都不需要只有一个vendor 文件夹。现在的驱动空间很便宜。我认为绝对没有理由。
    2. 按照设计,每个 composer 项目都有自己的 vendor 文件夹,因为如果您有 2 个项目需要相同的包但不同版本,它会失败。

    我建议保持简单。保持它像聪明人设计的那样。并且不要试图无缘无故地搞砸。

    【讨论】:

    • 关于您的第一点,内存不是问题。我希望使用由一个 composer.json 文件管理的相同供应商文件夹,该文件将被所有四个 Web 应用程序使用。在我通过composer引入一个新模块/包的情况下,而不是更新每个网站供应商文件夹(一次通过composer一个),更新一个composer.json文件和一个供应商文件夹是有意义的,并且让它在所有其他网络应用程序中发生。
    • 没有。当您需要在项目 1 中打包 foo/A 并在项目 2 中打包 foo/B 时,时间将会到来。如果 foo/A 依赖于 foo/C 版本 1 和 foo/B 依赖于 foo/C 版本 2,那么一切都搞砸了.我见过 一些 人像你一样思考,每次这些人都以混乱的设置结束并需要返回一个项目一个 vendor 文件夹理念。这是一个精心设计的机制。复制composer.json 并在每个项目上运行更新并保持它们独立更容易。如果出现任何问题,您可以将它们保留在不同的依赖项上。
    猜你喜欢
    • 2013-07-10
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多