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 – 代 ...
随机推荐
- jQuery笔记——基础知识
jQuery是一个JavaScript库,它通过封装原生的JavaScript函数得到一整套定义好的方法.在jQuery程序中,不管是页面元素的选择.内置的功能函数,都是美元符号“$”来起 始的.而这 ...
- SQL Server 2008怎么自动备份数据库
在SQL Server 2008数据库中.为了防止数据的丢失我们就需要按时的来备份数据库了.要是每天都要备份的话,人工备份会很麻烦的,自动备份的话就不需要那么麻烦了,只 要设置好了,数据库就会自动在你 ...
- 如何编写Word文档 多级编号
每次都忘 选择这个带标题的 这样可以根据标题来指定分级
- 最长上升子序列(LIS)
最长递增子序列,Longest Increasing Subsequence 下面我们简记为 LIS.排序+LCS算法 以及 DP算法就忽略了,这两个太容易理解了. 假设存在一个序列d[1..9] = ...
- Django模板语言之组合搜索
url.py from django.conf.urls import url from django.contrib import admin from app01 import views url ...
- thinkphp对mysql的CURD操作
利用thinkphp(3.2.3)来操作数据库,首先要连接数据库.我们需要对某数据库写一个配置文件,thinkphp会根据该配置文件自动连接上数据库.而model文件就不用自定义,内置的即可解决问题. ...
- 【HDU6026】Deleting Edges
题意 有一个n个节点的无向图,结点编号从0-n-1,每条边的长度时1to9的一个正整数.现在要删除一些边(或者不删),使得到的新图满足下面两个要求. 1.新图是一颗树有n-1条边2.对于每个结点v(0 ...
- Github简单的上传和修改
先自己手动创建一个仓库 echo "# delet" >> README.md git init git add . git commit -m "first ...
- Angular23 loading组件、路由配置、子路由配置、路由懒加载配置
1 需求 由于Angular是单页面的应用,所以在进行数据刷新是进行的局部刷新:在进行数据刷新时从浏览器发出请求到后台响应数据是有时间延迟的,所以在这段时间就需要进行遮罩处理来提示用户系统正在请求数据 ...
- Opencv图像变成灰度图像、取反图像
#include <iostream>#include <opencv2/opencv.hpp> using namespace cv;using namespace std; ...