使用git/composer开发和生产的ZF2自动加载策略

使用git/composer开发和生产的ZF2自动加载策略,git,zend-framework2,composer-php,autoload,Git,Zend Framework2,Composer Php,Autoload,我正在使用Zend Framework 2,并从Zendskletonapplication开始。我在本地使用composer,它使用vendor/autoload.php进行自动加载。问题是git中不包括vendor/autoload.php和vendor/composer。(gitignore) 因此,我的问题是: 我是否必须编辑Zendskletonapplication附带的 在开发和生产中处理composer、git和自动加载的最佳实践是什么 我应该在生产中使用大型类映射进行自动加载

我正在使用Zend Framework 2,并从Zendskletonapplication开始。我在本地使用composer,它使用
vendor/autoload.php
进行自动加载。问题是git中不包括
vendor/autoload.php
vendor/composer
。(gitignore)

因此,我的问题是:

  • 我是否必须编辑Zendskletonapplication附带的
  • 在开发和生产中处理composer、git和自动加载的最佳实践是什么
  • 我应该在生产中使用大型类映射进行自动加载吗
  • Composer从未在生产环境中使用过

顺便说一句,我使用的Zend服务器预装了ZF2库,我在PackageGist上没有的供应商文件夹下有一个私有软件包。

它们在gitignore中,因为您必须在服务器端下载composer并推送composer.json来安装所需的软件包。

composer应该管理所有应用程序
供应商/
中的依赖关系。即使服务器上已经有ZF2的副本,您也应该让composer完成它的工作,并安装特定于应用程序的副本。除了将所有依赖项保留在一个位置之外,这意味着您可以轻松地在同一台服务器上使用不同版本的ZF2安装应用程序,并根据需要轻松升级/降级

Composer可以直接从源代码管理或zip/gzip文件等安装PackageGist上未列出的包。所以,让它来处理你的私人包裹吧

您应该能够完全删除
vendor/
文件夹,然后只需运行
composer install
即可再次恢复该文件夹。如果你还没有处于那种状态,那么我建议你试着去做——这会让你的生活更轻松

回答您的具体问题:

我是否必须编辑Zendskletonapplication附带的init_autoloader.php

没有

在开发和生产中处理composer、git和自动加载的最佳实践是什么

skeleton应用程序使用最佳实践:

  • 供应商/
    应排除在源代码管理之外
  • composer.json
    composer.lock
    都应该在源代码管理中
我应该在生产中使用大型类映射进行自动加载吗

类映射总是比标准自动加载器提供性能提升。这有多大的不同取决于你的应用程序

Composer从未在生产环境中使用过


作曲家自动加载器是的。就我个人而言,在部署新版本时,我已经安装了
composer
,作为自动化部署过程的一部分,以填充
vendor/
文件夹。

hmm。我们使用的是Zend Server,因此不需要ZF2库。但是如果我们在服务器上使用composer,它将下载/安装ZF2两次。您必须使用composer.json编写所需的内容,这就是为什么需要两个不同的部分&我不明白。如果我安装了一个需要“zendframework/zendframework”的外部模块,那么整个框架是否安装在“vendor/”下?对不起,现在我明白你的意思了,我不知道如何帮助你,从来没有遇到过这样的事情,我认为这不是一个坏主意。如果我将
zendframework/zendframework
放在主composer.json文件的require dev下,那么它就可以工作了。此外,我还为所有供应商模块设置了gitignore。下一个问题是我有一个不在PackageGist上的私有模块。也许我必须将它移动到
模块
文件夹,或者尝试制作一个私有包。()您需要将composer.json和composer.lock文件提交到生产服务器,并在您的生产服务器上运行composer安装。@STLMikey就像我与ROLO讨论过的一样,问题是我使用的是Zend服务器,其中预安装了ZF2库,并且我在供应商下有一个私有软件包,它不在PackageGist上。谢谢,这一切都是有意义的。但作曲家真的应该从git中提取我的私人软件包吗?然后我必须将我的开发分成两个git存储库。一个用于主应用程序,一个用于我的私人软件包?通常情况下,您在供应商中拥有的您自己创建的库也存在,因为您希望能够在其他应用程序中使用它们。所以它拥有自己的git回购是有道理的。啊,是的,现在一切都有道理了。非常感谢。您对类映射部分的理解大体上是错误的。虽然在每个请求上加载一个小类映射可能是有益的,但在每个请求上加载整个类映射也有缺点。如果类映射文件足够大,这将比正常的自动加载过程慢!因此,类映射并不总是更快。事实上,如果你用Composer生成了一个优化的自动加载器,那么最好实际衡量一下它是否真的优化了东西。这很公平,总是值得衡量的。不过,我从未见过使用类映射会导致性能下降,即使是有10到数千条条目的类映射。由于类映射应该由opcache缓存,这应该抵消在这样一个文件中加载的大部分性能影响。