编程语言
首页 > 编程语言> > php – 使用composer来要求多个子目录共享的文件

php – 使用composer来要求多个子目录共享的文件

作者:互联网

我有一个GoDaddy共享主机站点.

根文件夹是html

我使用它作为测试服务器,所以html有几个子目录,如/ site1,/ site2,/ site3.

我想安装和使用parse.com PHP SDK并且是following this guide to set it up

我在服务器上安装了composer:

-bash-4.2$curl -sS https://getcomposer.org/installer | php
#!/usr/bin/env php
All settings correct for using Composer
Downloading...

Composer successfully installed to: /home/content/08/555555/html/composer.phar
Use it: php composer.phar

我用以下内容创建了composer.json:

{
  "require" : {
    "parse/php-sdk" : "~1.1.*"
  }
}

据我了解,我应该将此文件放在我的项目文件夹中,这个文件夹似乎意味着站点的根文件夹,例如我的示例中的site1,然后cd到该目录和“使用install参数执行composer”.

但是,我希望能够在/ site1,/ site2,/ site3等每个站点中包含解析SDK.

我是否需要将composer.json添加到每个站点文件夹,将parse文件夹放在html中并将路径更改为“../parse/php-sdk”:“~1.1.*”,或者有更好的方法设置这个?

解决方法:

Composer不是作为包管理器构建的,而是一个依赖管理器.不同之处在于,包管理器将包安装在一个中央位置供所有人使用,而依赖性管理器仅在一个应用程序中本地安装.

Composer COULD也可以将软件包安装到一个中心位置:composer global需要供应商/软件包,并在那里创建一个可供应用程序使用的自动加载器.当涉及使用多个集中安装的软件包的多个应用程序时,问题就开始了.

第一个问题:更新.前进到一个重要的新版本(即不仅是错误修正,应该向后兼容,但新功能和包的内部工作可能不兼容的更改)可能需要在应用程序中进行一些调整.现在,如果要更新中央软件包,则必须同时在所有应用程序中进行此类调整.这并非不可能,但通常它会禁止更新,因为没有人愿意在所有其他应用程序中完成额外的工作.

第二个问题:当使用仅应在本地为一个应用程序安装的程序包但需要集中安装的程序包的组件时,Composer将无法识别此安装.您将安装此软件包两次 – 而本地安装不需要与中央安装版本相同 – 这将导致各种可能的不兼容问题,这些问题确实难以调试,因为突然出现了自动加载的顺序影响可能的结果.

虽然每个应用程序多次在同一版本中冗余安装相同的软件包听起来是个坏主意,因为它浪费了文件空间,但事实恰恰相反:文件空间很便宜,工作应用程序被认为比硬盘上重复文件的成本.并且管理和更新单个应用程序的依赖关系的难易程度很难与中央安装相匹配.

PEAR使用了核心方法.维护者花费了大量的工作来保证向后兼容软件包的每个版本,即使今天的常规PEAR软件包向后兼容PHP 4.0也是如此.没有人喜欢今天使用PEAR,甚至在Composer复活之前也不喜欢使用它.我认为这是一个强有力的指标,无法在中心位置安装软件包.

标签:json,php,composer-php,parse-com
来源: https://codeday.me/bug/20190528/1170381.html