首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP-通过composer安装库

PHP-通过composer安装库
EN

Stack Overflow用户
提问于 2019-05-11 10:44:35
回答 1查看 1.1K关注 0票数 1

一些PHP库可以在通过composer安装它们之后使用.

这是什么意思?

这是使用这些库的唯一方式,还是使用它们复制代码以纠正位置并在代码中引用它们的方法?

示例:可以使用mPDF (仅限?)通过作曲家https://mpdf.github.io/

可以使用PHPMailer在正确的位置复制文件并引用它们( https://github.com/PHPMailer/PHPMailer )。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-11 15:44:27

库的特点是,它们可能需要其他库,而那些库可能需要其他库等等。因此,下载它们并将它们放在某个位置将很繁琐,当两个库需要一个不同版本的相同库时,您会遇到问题。Composer将通过确定解决所有需求所需的库来解决此问题,并确保下载适合所有需求的版本,或引发当前库集合中包含不兼容库以及哪些库不兼容的错误。

另一个问题是找到存储这些库的正确位置,因为PHP必须确定每个类的存储位置,您必须将require/include语句添加到您的代码和库中,这很繁琐,并且会使将来的更新复杂化,例如当类被重命名或删除时。解决这一问题的方法之一是拥有一个共享的lib目录,但是当您有多个需要不同库版本的项目时,您会遇到问题。

对于库,composer是事实上的标准,您将始终需要/希望使用它在项目中安装库。它负责解决正确的版本,自动加载和更新,这使它非常有用,特别是当你还在的时候,作曲家不是一件事。我会使用它,即使我不需要库仅仅为了自动加载和以后添加库的能力,当我的项目增长/改变。

编辑:即使PHPMailer也提供了一个composer.json,尽管它不需要其他库,但是如果您通过composer安装它,您可以确保您的系统满足您可能错过的需求(扩展),从而可能导致一个很长的调试会话,找出某些特性不能工作的原因。

编辑,您也可以使用composer进行共享托管的项目。不必在服务器上运行命令,而是必须在本地计算机上运行命令,或者为实际服务器构建服务器。您可以将项目(包括供应商文件夹)复制到您的共享主机上,这样就可以工作了。供应商文件夹包含所有库和autoload.php,可以与代码一起复制。

为了可靠地做到这一点,可以在配置下的composer.json中指定运行代码的平台。您至少应该定义正确的PHP版本,但也应该定义已安装的扩展,以确保在没有所需扩展的情况下不会意外地安装库。当您运行composer installcomposer update时,它将使用这些平台详细信息作为下载与它们匹配的库的基础。当您安装了PHP 7时,这一点尤其重要,但是您的主机还没有安装它。

与使用代码的服务器相比,在单独的服务器上运行composer时,有几个选项将不像--apcu-autoloader那样工作,但您可能不会使用它们。

如果您在本地计算机上运行composer并复制内容,则可以通过在编写器安装中添加几个选项来稍微改进体验:

代码语言:javascript
复制
composer install --no-dev --prefer-dist --classmap-authoritative

您可以在文献资料中获得有关这些选项的详细信息。重要的是:

  • --no-dev,可能会减少下载到生产所需库的数量(因为我们只想在服务器上运行项目,而不是在服务器上开发)。
  • --prefer-dist (为什么在文档中解释)
  • --classmap-authoritative--optimize-autoloader,(第一个可能不适用于某些项目/库),但它将改进自动加载,使您的应用程序在生产中稍微快一点。

前两个选项,如果您复制您的开发环境,您不应该运行,因为它们不会为开发提供所有的依赖关系。可能会设置第二个项目,用于检查git中的最新更改,运行测试以确保一切正常运行,然后删除供应商&运行该命令(可能会对prod的配置进行一些更改),最后将内容复制到您的共享宿主环境中。如果您使用像gitlab这样的提供ci功能的工具,您也可以在ci服务器上执行这些步骤,并允许复制内容,但是设置起来需要一些时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56089544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档