如何使用composer的使用进行包管理更合适

如何使用composer进行包管理更合适_百度知道
如何使用composer进行包管理更合适
提问者采纳
ini文件内 browscap参数3,修改php.,缺发现不能下载包;XXX&#92.dll&quot.exe安装程序后.,替代国外网站当你安装完Composer后. SSL dll未找到,却没有官方教程那么简单;”使用Composer中文镜像网站,去掉前面“,我们要什么国内的镜像站点进行代替。所以;Roaming&#92.json.。设置phpComposer 是PHP的包管理工具;Composer&#92,修改php,常用方法有两种.:1,这是一个众所周知的原因;Users&#92,修改php,还有Windows下:全局配置的文件一般放在 C:\. 修改全局配置,非常方便。但是安装使用.AppData&#92,方便安装在从官网下载 Composer-Setup,尤其是在中国.本篇经验将教你如何正确安装Composer 及正确使用.ini文件内 extension_dir 参数2,在安装过程中会碰到几个麻烦的地方. 找不到扩展dll文件,使用时..ini文件内&;extension=php_openssl:1;config. browscap未找到
来自团队:
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁如何使用composer进行包管理更合适_百度知道
如何使用composer进行包管理更合适
..ini文件内 extension_dir 参数2;.ini文件内 browscap参数3.json.本篇经验将教你如何正确安装Composer 及正确使用。所以;;Roaming&#92.dll&quot. SSL dll未找到;extension=php_config.,常用方法有两种,尤其是在中国,方便安装在从官网下载 Composer-Setup.exe安装程序后. 找不到扩展dll文件,这是一个众所周知的原因,在安装过程中会碰到几个麻烦的地方,却没有官方教程那么简单,修改php,修改php:&#92. browscap未找到,还有Windows下;Composer&#92.ini文件内&Users\AppData\XXX&#92,去掉前面“;”使用Composer中文镜像网站,缺发现不能下载包,替代国外网站当你安装完Composer后:1,修改php.. 修改全局配置:全局配置的文件一般放在 CComposer 是PHP的包管理工具,非常方便。但是安装使用,我们要什么国内的镜像站点进行代替:1,使用时.ini。设置php.
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁IBM Bluemix
点击按钮,开始云上的开发!
developerWorks 社区
如今复杂的 PHP 项目往往会使用多个第三方库,它们拥有自己的依赖关系。了解 Composer (一个为了 PHP 社区而在
PHP 中构建的开源项目)如何在现代 PHP 应用程序中解决这个依赖关系处理难题。
, CTO; 大会主席和主编, php[architect]
Eli White 构建 Web 应用程序已有超过 20 年的时间,他从发布 PHP 4 的那天起就喜欢上了 PHP。自那以后,他一直强烈支持
PHP,并在他所从事的每个项目中使用 PHP。他目前是 php[架构师] 和创始合伙人的主编和会议主席,还是 musketeers.me 的
CTO。他还是一个狂热的作家(博客、文章和书籍),并在众多研讨会上发表过演讲。
由于 PHP 已经成熟,使用它建立的应用程序的复杂性在急剧增长。现代 PHP
开发人员往往依靠第三方库来帮助自己更快地构建软件项目。例如,如果不使用现在为 PHP 提供的维护良好的第三方库,那么有可能无法构建像
这种规模的应用程序。但是,软件重用的好处是有代价的:您不仅必须管理每个应用程序安装所需的库的列表,还必须管理所创建的依赖关系树,因为所使用的库均构建于其他库之上。您如何能够管理多个库的复杂且相互依赖的安排?
开发人员在过去常用的两种依赖关系处理解决方案已失去其效率。其中一个解决方案是将自己所需的所有库与自己的代码一起签入到版本控制存储库中。这种技术在某程度上是可行的,但所造成的麻烦往往比它解决的问题更大。您需要维护自己的本地库版本。您必须通过下载新的版本,并将其签入存储库,从而手动执行任何可用的库错误修复。最终,版本控制中会有一个巨大的变更日志,它与实际代码完全无关。由于这些原因,库一般会逗留在开始时刚好签入的那个版本,很少被更新。 PHP Extension and Application Repository (PEAR) 项目的部分设计目的是帮助您解决这个问题。PEAR
提供了一组配合工作的库,程序员可以为该库做出贡献。PEAR 还包括命令行工具,用于安装所需的库及其依赖关系(如果有的话)。PEAR
在很长一段时间中曾是最好的办法,并且有很多人使用它,但这个系统也有其不足之处。 PEAR
库安装被全局存储在操作系统上。虽然这种设计可以避免将库签入到您自己的版本控制存储库中,但它导致的问题比它解决的问题还要多。永远不知道在自己可能使用的任何系统上到底在运行哪个库版本。这种混乱往往成为虚假错误的来源:您会在新服务器上安装自己的应用程序,然后感到困扰,为什么它不工作,最终您可能认识到,原因是有问题的服务器没有合适的
PEAR 库。您需要访问权限来安装这些全局库(这是很多人在共享托管方面都觉得棘手的一个问题)。“大家都知道,与第一步编写程序相比,调试的难度要高得多。
所以,如果在编写时尽可能聪明一些,又怎么会需要调试呢?”Brian Kernighan 2011 年 4 月,两位 PHP 开发人员(Nils Adermann 和 Jordi Boggiano)认为 PHP
的依赖关系处理问题需要有一个新的解决方案,并开始进行开发。他们在 2012 年 3 月 1 日发布了 。在 Composer
中,您可以创建一个配置文件,指定应用程序所需的第三方库(无论它们被托管在哪里)。然后运行 Composer,编写
完整的应用程序:Composer 下载您指定所有的库及其所有依赖关系。本文将介绍 Composer 的基础知识,演示如何开始在 PHP
项目中使用该工具。安装 ComposerComposer 是一个多平台工具。在任何基于 UNIX® 或 Linux® 的计算机上,安装 Composer
都很简单。您可以通过 curl 和 PHP 直接运行安装程序,创建一个本地安装: curl -sS https://getcomposer.org/installer | php 上面的命令在本地 composer.phar 可执行文件中创建一个 Composer 安装。为了系统上的任何地方都能全局访问这个安装,请将
composer.phar 复制到您的路径的一个目录中,如本例所示(您可能需要使用 sudo 给自己赋予根目录的写权限): mv composer.phar /usr/local/bin/composer 现在,您可以在系统上任何位置从命令行运行 composer。 在 Windows®上,手动安装比较困难,所以 Composer 创建者开发了一个 ,您可以下载并运行它。在完成安装后,您可以从 Windows 命令行使用 Composer。基本用法 Composer 是一个功能强大的工具,提供了数量惊人的选项。但是,最常见的用法是,根据第三方提供的配置,为第三方 PHP
应用程序或框架创建/下载/安装一个代码库。例如,可以
Zend 框架及其所有依赖关系。运行 Composer 的 install 命令,Composer
就会完成余下的工作。如果全局安装了 Composer(或安装在 Windows 上),请运行以下命令: composer install 如果只对一个应用程序完成了本地 Composer 安装,则运行: php composer.phar install 在本文的其余部分,我的示例假设您已全局安装了 Composer。 除了下载项目/应用程序所需的所有库之外,Composer 还提供了一个方法,让您可以轻松地包括所有的库。它将所有的库安装到一个命名为 vendor
的文件夹,将它们与您自己的项目代码区分开来。在 vendor 文件夹中,它创建了一个名为 autoload.php
的文件。在您的项目中包括该文件,这等于为 Composer 所下载的所有库都安装了一个自动加载程序: require 'vendor/autoload.php';Composer 如何查找库 要下载库包,Composer 首先需要知道在哪里可以找到这些软件包。信息由 Composer 存储库 提供:在线来源列出了
Internet 上提供的软件包、如何检索它们,以及它们自己的依赖关系。虽然任何人都可以维护自己的存储库,以提供对内部库的访问权限(Composer
网站为此提供了 ),但您会使用的主要存储库是 。Packagist 提供为 PHP 中的大部分开源项目提供软件包。您可以去那里找到自己需要的库。 软件库往往不是良好的合作对象。将所有 Packagist 库结合在一起的粘合剂是由
(原名 PHP
Standards Group)提供的,该组织是在
上成立的。成立 PHP-FIG(代表着众多流行的 PHP
应用程序和框架的一组人)就是为了看看人们的项目如何能够更好地协同工作。该合作的高潮是 PHP Standards Recommendations
(PSR) 的创建,它描述库的可选标准。实现这些共同标准的库能够在一组共同的期望下互操作。 最重要的 PSR 是
和 ,它们促进了 Composer
的创建。这些 PSR
为类和命名空间声明一个共同的命名方法,以及它们应该如何将文件映射到文件系统上。然后,一个共同的自动加载程序接口可以从它需要的任何库加载类。创建一个通用的标准方式,让库不需要覆盖彼此就可以共享它们的类,这使得
Composer 变得非常有效。为自己的项目配置 Composer 现在,您已经知道了如何安装 Composer,了解了自动装载的工作原理,并且能够找到自己想要使用的软件包,我将介绍一个为自己的项目设置
Composer 的示例。 我将会开始编写一个新的 PHP 项目,这是一个小程序,能够将 Markdown 文件转换为 HTML 输出。在 Packagist 搜索
markdown,显示
库作为一个不错的选择,并显示项目的
的URL,如图 1 所示: 图 1. 在 Packagist 上的库条目 为了告诉 Composer 在您的项目中要包括哪些文件,创建一个名为 composer.json 的配置文件。这个 JSON
格式的文件可以包含各种命令,但您需要的最常用的(而且往往是惟一的)命令是 require
键。我将自己想要的软件包名称以及将要支持的版本传递给这个键: {
"require":{
"michelf/php-markdown":"1.4.*"
} 现在,我可以在我的应用程序目录中运行 composer install。 Composer
需要几分钟来下载我所指定的库要求到一个 vendor 目录中,并为我创建一个包括此目录的自动加载程序。Composer 也创建了另一个文件,即
composer.lock,我会立刻更详细地介绍它。命令和输出看起来如下所示: & ls
composer.json
& composer install
Loading composer repositories with package information
Installing dependencies (including require-dev)
- Installing michelf/php-markdown (1.4.1)
Downloading:100%
Writing lock file
Generating autoload files
composer.json composer.lock vendor/ 现在我可以编写依赖于 michelf/php-markdown 软件包的代码。下面简短的 PHP 脚本将完成我想做的工作: &?php
require 'vendor/autoload.php';
use \Michelf\M
echo Markdown::defaultTransform(file_get_contents("php://stdin")); 多亏了 Composer,我获得了一个简单明了的解决方案。我选择的 Markdown
包碰巧没有额外的依赖关系。但是,如果我选择了一个有依赖关系的软件包,Composer 将在同一时间自动下载所有这些依赖关系并配置它们。指定版本 您可以根据自己的软件需求,将任意数量的库添加到 composer.json
文件,此外,对于每一个库,您都可以指定想接受的版本。指定版本是一个很重要的部分,可以确保您的软件始终可用。通过在版本号中使用通配符,甚至可以允许
Composer 以您的名义升级库。在前面的示例中,我指定的版本为 "1.4.*"。现在,每当运行
composer install 时,Composer 将查找 1.4 版库的最新版本,但不会接受 1.5、2.0
或其他任何更高版本。如果我希望总是获得库的最新版本,那么我可以指定 "*"(但如果底层 API
被更改,这可能会引起问题)。 表 1 显示,在指定版本限制时可以使用的选项的完整列表。表 1. 软件包的版本限制规范示例描述确切版本1.0.2软件包的确切版本。范围&=1.0&=1.0 &2.0&=1.0 &1.1 || &=1.2比较运算符可以指定有效版本的范围。有效的运算符是
&、&=、&、&=
和 !=。可以定义多个范围,而且默认情况下按照 AND 处理,或者用双竖线
(||) 分开它们,则作为一个 OR 运算符。连字符范围1.0 - 2.0创建一个包容性的版本集。通配符1.0.*带有 *
通配符的模式。1.0.* 相当于
&=1.0 &1.1。波浪运算符~1.2.3“下一个重要版本”:允许最后一位数字增加,因此变得和
&=1.2.3 &1.3.0 一样。允许最后一位数字增加。^运算符^1.2.3“下一个重要版本”:类似于波浪线运算符,但假设语义版本和直到下一个主要版本的所有变更都应该被允许,因此变得和
&=1.2.3 &2.0 一样。软件包稳定性 在配置 Composer
获取项目所需要的准确的库时,另一个要考虑的因素是想要的库版本有多稳定。如果需要最新的版本或正在帮助测试软件,那么可以请求软件包的测试版或开发分支。您可以指定稳定性标志,将它添加到
require 字符串的末尾,并使用 @。例如,为了请求 PHPUnit
的最新开发版本,您可以指定:{
"require":{
"phpunit/phpunit":"4.8.*@dev"
}对于引用,Packagist 显示存在哪些分支,以及引用它们需要使用的字符串,如
所示。版本锁定 使用 Composer 的巨大好处是,版本控制中不需要包括第三方库。在发布软件的新安装时,可以允许 Composer
为您下载并配置所有库,从而保持版本控制清洁。但是,您可能会遇到问题。想象一下,您的网站运行 20
个并发服务器,全部使用不同版本的库,因为代码的部署和 composer install
的运行分别在不同的时间发生。或者更简单地说,多个开发人员可能有不同的库,并且无法复制彼此的错误。其结果可能是灾难性的。 Composer 为这个问题提供了一个解决办法。回想 "" 一节,初次运行 composer install 时创建了一个
composer.lock 文件。该文件指定到底要安装哪些库,以及过程中下载哪些特定的版本。当您将项目提交到版本控制软件中的时候,请提交
composer.lock 文件,而不是 vendor 目录。当准备好一个代码的新部署,并且运行了
composer install 的时候,Composer
会首先查找一个锁定文件。如果找到该文件,则会安装一个与原始安装完全相同的副本,以确保所有安装的一致性。 当然,还需要了解迁移动到新代码版本的方式,最好是采用比删除锁定文件和整个 vendor 目录更好的方式。Composer 以
update 命令的形式提供该工具。当运行 composer update 时,Composer
会参照 JSON
文件的最新配置,比较已安装的软件版本与锁定文件。如果配置允许的较新版本的软件是可用的(或者,如果自上次安装后,新库已被添加到配置),Composer
会下载新的库,并对它们进行相应的配置。为自己的类创建一个自动加载程序 Composer 还有许多内置的功能,可以在
中阅读了解这些功能。其中一个最好的功能是,您可以在配置中指定自己的类,这使得 Composer
可以自动在自动加载程序中生成项目的代码。此功能让您免于自己创建独立于 Composer 的自动加载程序。在这里,我可以更新以前的 composer.json 文件来创建自己的自动加载程序: {
"require":{
"michelf/php-markdown":"1.4.*"
"autoload":{
"psr-4":{"Converter\\":"src/"}
} 在本例中,我指定了一个名为 Converter 的命名空间,并说明该命名空间的所有类文件均存在于名为 src
的相对目录中。所以,如果我有一个名为 Converter\CommandLine
的类,自动加载程序将会查找这个类,它在文件系统中被保存为 src / CommandLine.php。这个文件现在是为我生成的一个 PSR-4
兼容的自动加载程序。提供自己的软件包 此时,我可以将 Markdown 到 HTML 的转换器应用程序提供为一个 Packagist
上的软件包。(由于转换器是一个应用程序,而不是一个可重用的库,将它作为一个软件包提供并没有实际意义,但是,为了本练习的需要,我们假装它是一个库)。从本质上讲,通过创建我的
composer.json 文件,该应用程序本身是一个软件包,可以安装它。包名称的格式必须是
vendor/package。所以,在我的例子中,我将下面的代码添加到配置文件: "name":"EliW/Converter", 其他一些配置也值得补充。您可以将所需的 PHP 版本指定为 Composer 将执行的虚拟软件包名称。(您有许多选项,可以强制版本号,而不是让
Composer 假定标准的版本控制系统模式。您可以提供元数据,让软件包列表看起来像是完整的。)为了指定 PHP
版本号,并将我自己的转换器打包为完整的软件包,我会这样做: {
"name":"EliW/Converter",
"require":{
"michelf/php-markdown":"1.4.*",
"php":"&=5.3.0"
}配置现在是完整的。当我将自己的应用程序提交给一个在线版本控制系统(如 GitHub),我可以登录到我的 Packagist
帐户,并提交我的软件包信息,让其他人可以将我的应用程序包含在他们的项目中。结束语 在本期
文章中,我介绍了如何使用 Composer 从第三方库组装项目的基本知识。查看 ,找到有关 Composer
的不常用功能的更深入讨论,并了解如何托管自己的内部库,而无需通过 Packagist 帮助组织复杂的代码库。按照本文章系列的进展,我已经介绍了 PHP
本身的演变过程,它如何满足现代安全要求,以及它如何采用现代的依赖关系管理和软件包管理系统来处理日益复杂的现代代码库。在下期文章中,我将讨论 PHP
生态系统的发展情况,让开发人员可以通过使用 PuPHPet 来管理其部署和开发环境。
参考资料 :查看 developerWorks PHP 项目资源来提升您的 PHP 技巧。 ""(Dan Denoncourt,developerWorks,2011
年 3 月):获得命名空间语法的概述,学习其用法的最佳实践,并查看使用命名空间的一个小型 Model-View-Controller
应用程序示例。 ""(Dan Denoncourt,developerWorks,2010 年 12
月):了解如何和在何处使用 PHP 闭包的更多信息。:浏览 developerWorks 上的所有 PHP 内容。:了解如何以现代方式构建 PHP 项目的更多信息。:咨询所有 PHP 文档的官方源代码。:获得有关 PHP 的新闻、视图和社区信息。:查看致力于 PHP 教育的在线杂志、印刷杂志和最近新闻。 :通过专门关于 Web 技术的文章和教程,扩展您在网站开发方面的技能。:这是有关 Ajax 编程模型信息的一站式中心,包括很多文档、教程、论坛、blog、wiki 和新闻。任何 Ajax
的新信息都能在这里找到。查看 ,了解更多和 HTML5 相关的知识和动向。加入 ,developerWorks 社区是一个面向全球 IT
专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。
developerWorks: 登录
标有星(*)号的字段是必填字段。
保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件。
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
选择您的昵称
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。
您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
标有星(*)号的字段是必填字段。
(昵称长度在 3 至 31 个字符之间)
单击提交则表示您同意developerWorks 的条款和条件。 .
所有提交的信息确保安全。
文章、教程、演示,帮助您构建、部署和管理云应用。
立即加入来自 IBM 的专业 IT 社交网络。
为灾难恢复构建应用,赢取现金大奖。
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=Web development, Open sourceArticleID=1008726ArticleTitle=更新后的
PHP: 用于 PHP 依赖关系处理的 Composerpublish-date=

我要回帖

更多关于 composer 使用 的文章

 

随机推荐