PHP的Composer 与 Packagist,简单入门
【转】http://www.php.cn/manual/view/34000.html
Composer 是一个 杰出 的依赖管理器。在 composer.json 文件中列出你项目所需的依赖包,加上一点简单的命令,Composer 将会自动帮你下载依赖包并设置自动加载。Composer 可以类比为 node.js 世界的 NPM 或 Ruby 世界的 Bundler。
现在已经有许多 PHP 第三方包已兼容 Composer,随时可以在你的项目中使用。这些 “包(package)” 都已列在 Packagist 上了,这是一个官方的 Composer 兼容包仓库。
如何安装 Composer
按照官方指导 下载 Composer 的最安全的方式。 这种方式在安装过程中会检验安装脚本不被损坏或篡改。 安装脚本默认是将 Composer 安装到当前项目的 本地 目录下面。
我们建议将 Composer 安装到 全局 环境中(例如复制到 /usr/local/bin 目录),如下:
mv composer.phar /usr/local/bin/composer
注意: 如果上述过程失败是由于权限的原因,请重新执行 mv 并在此指令前面添加 sudo。
运行本地安装的 Composer 使用 php composer.phar 命令;运行全局安装的 Composer 直接使用 composer 命令。
Windows环境下安装
对于Windows 的用户而言最简单的获取及执行方法就是使用 ComposerSetup安装程序,它会执行一个全局安装并设置你的 $PATH,所以你在任意目录下在命令行中使用 composer。
如何手动安装 Composer
手动安装 Composer 是一个复杂的技术活儿,仅管如此还是有许多开发者有各种原因喜欢使用这种交互式的应用程序安装 Composer。在安装前请先确认你的PHP安装项目如下:
正在使用一个满足条件的 PHP 版本
.phar 文件可以正确的被执行
相关的目录有足够的权限
相关有问题的扩展没有被载入
相关的 php.ini 设置已完成
由于手动安装没有执行这些检查,你必须自已衡量决定是否值得做这些事,以下是如何手动安装 Composer :
curl -s https://getcomposer.org/composer.phar -o $HOME/local/bin/composer chmod +x $HOME/local/bin/composer
路径 $HOME/local/bin (或是你选择的路径) 应该在你的 $PATH 环境变量中。这将会影响 composer 这个命令是否可用.
当你遇到文档指出执行 Composer 的命令是 php composer.phar install时,你可以使用下面命令替代:
composer install
本章节会假设你已经安装了全局的 Composer。
如何设置及安装依赖
Composer 会通过一个 composer.json 文件持续的追踪你的项目依赖。 如果你喜欢,你可以手动管理这个文件,或是使用 Composer 自己管理。composer require 这个指令会增加一个项目依赖,如果你还没有 composer.json 文件, 将会创建一个。这里有个例子为你的项目加入 Twig 依赖。
composer require twig/twig:~1.8
另外,composer init 命令将会引导你创建一个完整的 composer.json 文件到你的项目之中。无论你使用哪种方式,一旦你创建了 composer.json 文件,你可以告诉 Composer 去下载及安装你的依赖到 vendor/ 目录中。此命令也适用于你所下载的已经带有 composer.json 文件的项目:
composer install
接下来,添加这一行到你应用的主要 PHP 文件中,这将会告诉 PHP 为你的项目依赖使用 Composer 的自动加载器。
<?php
require 'vendor/autoload.php';
现在你可以使用你项目中的依赖,且它们会在需要时自动完成加载。
更新你的依赖
Composer 会建立一个 composer.lock 文件,在你第一次执行 composer install 时,保存下载的每个依赖包的准确的版本号。假如你要分享你的项目给其他开发者,并且 composer.lock 文件也在你分享的文件之中的话。 当他们执行 composer install 这个命令时,他们将会得到与你一样的依赖版本。当你要更新你的依赖时请执行 composer update。部署项目时只使用 composer install而不要使用 composer update 命令,否则再生产环境上安装的依赖和你预期的不一致。(注:这个测试了,并没有发现有什么区别,可能是还不够深入吧)
当你需要灵活的定义你所需要的依赖版本时,这是最有用。 例如,~1.8 表示 “任何大于 1.8.0,但小于 2.0.x-dev 的版本”。你也可以使用通配符 * 在 1.8.* 之中。现在 Composer 在执行 composer update 时将升级你的所有依赖到你限制的最新版本。
更新通知
要接收关于新版本的更新通知。你可以注册 VersionEye,这个 web 服务可以监控你的 Github 及 BitBucket 帐号中的 composer.json 文件,并且当包有新更新时会发送邮件给你。
检查你的依赖安全问题
Security Advisories Checker 是一个 web 服务和一个命令行工具,二者都会仔细检查你的 composer.lock 文件,并且告诉你任何你需要更新的依赖。
处理 Composer 全局依赖
Composer 也可以处理全局依赖和他们的二进制文件。用法很直接,你所要做的就是在命令前加上 global 前缀。如果你想安装 PHPUnit 并使它全局可用,你可以运行下面的命令:
composer global require phpunit/phpunit
这将会创建一个 ~/.composer 目录存放全局依赖,要让已安装依赖的二进制命令随处可用,你需要添加 ~/.composer/vendor/bin 目录到你的 $PATH 变量。
扫二维码,关注更多PHP资讯!
PHP的Composer 与 Packagist,简单入门的更多相关文章
- 用IntelliJ IDEA创建Gradle项目简单入门
Gradle和Maven一样,是Java用得最多的构建工具之一,在Maven之前,解决jar包引用的问题真是令人抓狂,有了Maven后日子就好过起来了,而现在又有了Gradle,Maven有的功能它都 ...
- [原创]MYSQL的简单入门
MYSQL简单入门: 查询库名称:show databases; information_schema mysql test 2:创建库 create database 库名 DEFAULT CHAR ...
- Okio 1.9简单入门
Okio 1.9简单入门 Okio库是由square公司开发的,补充了java.io和java.nio的不足,更加方便,快速的访问.存储和处理你的数据.而OkHttp的底层也使用该库作为支持. 该库极 ...
- emacs最简单入门,只要10分钟
macs最简单入门,只要10分钟 windwiny @2013 无聊的时候又看到鼓吹emacs的文章,以前也有几次想尝试,结果都是玩不到10分钟就退出删除了. 这次硬着头皮,打开几篇文章都看完 ...
- 【java开发系列】—— spring简单入门示例
1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控制反转 ...
- Docker 简单入门
Docker 简单入门 http://blog.csdn.net/samxx8/article/details/38946737
- Springmvc整合tiles框架简单入门示例(maven)
Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积 ...
- git简单入门
git简单入门 标签(空格分隔): git git是作为程序员必备的技能.在这里就不去介绍版本控制和git产生的历史了. 首先看看常用的git命令: git init git add git comm ...
- 程序员,一起玩转GitHub版本控制,超简单入门教程 干货2
本GitHub教程旨在能够帮助大家快速入门学习使用GitHub,进行版本控制.帮助大家摆脱命令行工具,简单快速的使用GitHub. 做全栈攻城狮-写代码也要读书,爱全栈,更爱生活. 更多原创教程请关注 ...
- Web---演示Servlet的相关类、表单多参数接收、文件上传简单入门
说明: Servlet的其他相关类: ServletConfig – 代表Servlet的初始化配置参数. ServletContext – 代表整个Web项目. ServletRequest – 代 ...
随机推荐
- 第十七章 MySQL Replication(待续)
··········
- Python——List
一.集成开发环境 集成开发环境(IDE,Integrated development Enviroment)是用于提供程序开发环境的应用程序,一般包括代码编辑器.编译器.调试器和图形用户界面等工具.集 ...
- Python函数的初识
一 什么是函数 定义: 定义一个事情或者功能,等到需要用的时候直接用就可以了,那么这个定义的就是一个函数 函数 : 对代码块和功能的封装和定义 函数定义的格式: def 函数名() ...
- Document.location.href和.replace的区别
转自:https://www.cnblogs.com/GT_Andy/archive/2007/10/31/1922138.html 1 Document.location.href和.replace ...
- Python基础—流程控制
一.Python流程控制 计算机程序在解决某个具体问题时,包括三种情形,即顺序执行所有的语句.选择执行部分的语句和循环执行部分语句,这正好对应着程序设计中的三种程序执行结构流程:顺序结构.选择结构和循 ...
- Oracle-11g 中当执行 DBMS_STATS 时,因数据泵外部表文件缺失 Alert Log 告警 "ORA-20011、ORA-29913" 以及 "KUP-XXXXX"错误
:first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: 0; } img { border: 0; m ...
- - description 方法作用
自定义一个Person类 @interface Person : NSObject { int _age; double _height; double _weight; NSString *_nam ...
- SaeMysql操作示例
新浪sae的官方说明文档:http://apidoc.sinaapp.com/sae/SaeMysql.html Class SaeMysql 具体实现:http://apidoc.sinaapp.c ...
- javascript使用技巧总结,不断更新...
1.使用a标签来获得当前页面相对地址的绝对地址 function getAbsoluteUrl(url){ var a; if(!a) a = document.createElement('a'); ...
- CentOS 安装mongodb3.0 二进制包
1.下载mongodb因为64位系统CentOS,所以下载64位的安装包: wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0 ...