Composer : php依赖管理工具
原始时代
我记得在当时用php的时候还没有composer,只有个pear,但是不好用呀,还不如直接在互联网上到处复制代码了,更快更不容易出错,当时也没有github这么好的社区工具了
总结如下
代码混乱
规范不统一
没有后续统一更新等管理
Composer侠应运而生
composer直到如今 已有5个年头了,也是直到今年才有了第一个稳定版本1.0,以前都是alpha版本了,其实composer的发展 也和 PHP-FIG (后续会专门解释的)的发展有很大关系
composer是php新时代的依赖管理利器,就像python的pip,nodejs的npm,javascript的bower等。你可以在自己的项目申明所依赖的外部库,composer可以帮你安装这些
composer解决如下问题
你有一个项目需要依赖若干个库
其中一个库依赖其他库
找出你需要的版本进行安装
安装Composer
要求
composer 要求 php 不低于 5.3.2+
命令
curl -sS https://getcomposer.org/installer | php
过程如下
$ curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading 1.2.1... Composer successfully installed to: /home/www/php/test/helloworld/composer.phar
Use it: php composer.phar $ ll
-rwxr-xr-x 1 501 dialout 1704783 Oct 10 23:20 composer.phar*
可以看到执行上述命令之后 会将composer.phar文件下载在当前目录。phar是php的压缩格式,可以直接在命令行运行该文件
全局安装命令
$ mv composer.phar /usr/local/bin/composer
Composer基本使用
composer.json
要在你的项目和库使用composer,那么composer.json就是必要文件,可以自行新建。内容是JSON格式非常容易编写
配置国内镜像源
将如下代码也放在composer.json中去
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.phpcomposer.com"
}
}
申明依赖 require
例如我的项目依赖phpexcel,申明如下
{
"require":{
"phpoffice/phpexcel": "1.8.0"
}
}
把上面两步代码合并起来,composer代码如下
{
"require":{
"phpoffice/phpexcel": "1.8.0"
},
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.phpcomposer.com"
}
}
}
安装依赖
php composer.phar install
使用国内镜像源安装很快的(会自动生成一个autoload.php文件),安装完结构如下
$ tree -L 2
|-- composer.json
|-- composer.lock
|-- composer.phar
|-- index.php
|-- vendor
|-- autoload.php
|-- composer
|-- phpoffice
自动加载
在index.php加入一行 代码就可以直接使用库了
require 'vendor/autoload.php'
Composer高级特性
安装单个库
php composer.phar require phpoffice/phpexcel
php composer.phar require phpoffice/phpexcel:dev-master
更新单个库
有时间想更新某一个库,不想更新依赖,很简单
php composer.phar update phpoffice/phpexcel
直接安装库 不用编辑composer.json
你要是觉得没添加一个库就要修改composer.json麻烦,可以直接使用 require 命令
php composer.phar require monolog/monolog #日志操作库
结构如下
$ tree -L 2
|-- composer.json
|-- composer.lock
|-- composer.phar
|-- index.php
|-- README.MD
-- vendor
|-- autoload.php
|-- composer
|-- monolog
|-- phpoffice
|-- psr
移除扩展
php composer.phar remove sinergi/browser-detector
生产环境优化
当你把项目部署到线上环境,不要忘了执行如下代码优化自动加载,可以提高20%左右的性能
php composer.phar dump-autoload --optimize
参考资源
博文演示代码: https://github.com/apanly/composer_helloworld
Pachagist官网地址:https://packagist.org/
PHP-FIG: http://www.php-fig.org/
Composer中文网: http://www.phpcomposer.com/
Json官网:http://json.org/
原文地址:Composer : php依赖管理工具
标签:composer psr require install pear phpexcel
智能推荐
- 【实战】Docker 入门实战一:安装Dockeer
- 【No.2 Ionic】Android打包
- PSR : php编码规范
- 【Composer】实战操作一:使用库
- 【Composer】实战操作二:自己创建composer包并提交
Composer : php依赖管理工具的更多相关文章
- composer php依赖管理工具
#composer是什么 Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们. composer出现之前我们php项目依赖管理大部分都是手动 ...
- Composer PHP 依赖管理工具
composer 是 PHP 用来管理依赖(dependency)关系的工具.你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件. 依赖管理 ...
- PHP的依赖管理工具----composer
安装Composer 参考:https://getcomposer.org/doc/01-basic-usage.md composer 是PHP依赖管理工具 PHP最低版本要求5.3.2,需要允许o ...
- 有用PHP依赖管理工具Composer新手教程
PHP依赖管理工具Composer新手教程 Composer 是 PHP 的一个依赖管理工具.它同意你申明项目所依赖的代码库,它会在你的项目中为你安装他们. 依赖管理 Composer 不是一个包管理 ...
- PHP依赖管理工具Composer入门
作者: JeremyWei | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://weizhifeng.net/manage-php-dependency-wi ...
- Go 包依赖管理工具 —— govendor
govendor 是一个基于 vendor 机制实现的 Go 包依赖管理命令行工具.与原生 vendor 无侵入性融合,也支持从其他依赖管理工具迁移,可以很方便的实现同一个包在不同项目中不同版本.以及 ...
- PHP之Composer类库依赖管理神器
Composer中文版说明见:https://github.com/kaka987/Composer-zh Composer 是PHP的类包依赖管理工具,用它可以轻松的引用第三方类包,类似于node的 ...
- yarn依赖管理工具的使用
Yarn是Facebook发布的一款依赖管理工具,它比npm更快.更高效. 与NPM命令对照 npm install => yarn install npm install --save [pa ...
- Golang依赖管理工具:glide从入门到精通使用
这是一个创建于 2017-07-22 05:33:09 的文章,其中的信息可能已经有所发展或是发生改变. 介绍 不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题.Java有牛逼轰轰 ...
随机推荐
- ural 1145. Rope in the Labyrinth
1145. Rope in the Labyrinth Time limit: 0.5 secondMemory limit: 64 MB A labyrinth with rectangular f ...
- 2014-2015 ACM-ICPC, NEERC, Moscow Subregional Contest C. CIA Datacenter
C. CIA Datacenter time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- 【python游戏编程之旅】第六篇---pygame中的Sprite(精灵)模块和加载动画
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 直到现在我们已经学了很多pygame基础知识了,从这篇博客开始我们将会学习pygame中高级部分,更多和精灵 ...
- [linux]ubuntu 下安装RMySQL包
http://downloads.mysql.com/docs/connector-odbc-en.pdf http://blog.csdn.net/ixidof/article/details/59 ...
- [转] linux 下查看一个进程运行路径的方法
http://blog.csdn.net/brioxu/article/details/5104736 在linux下查看进程大家都会想到用 ps -ef|grep XXX ps -aux | hea ...
- window 安装Mysql 5.6 发生系统错误 1067
问题: #安装MySQL服务:mysqld -install MySQL5 D:\Program Files\mysql_5.6.24_winx64\bin>mysqld -install My ...
- 几种常用的JS类定义方法
几种常用的JS类定义方法 // 方法1 对象直接量var obj1 = { v1 : "", get_v1 : function() { return ...
- 利用Jquery给当前页或者跳转后页面的导航栏添加选中后样式
具体的样式有两种情况,一种是直接给当前页面添加特殊样式,当网页刷新或者跳转到下一页后,样式消失:另一种情况是即使刷新页面后样式仍然有效. 直接上代码: 第一种情况: 在CODE上查看代码片派生到我的代 ...
- Objective-c的内存管理MRC与ARC
Objective-c的内存管理MRC与ARC Objective-c中提供了两种内存管理机制MRC(MannulReference Counting)和ARC(Automatic Referen ...
- ArcGIS Server 10.1 错误 service failed to start,
启动发布的地图服务时出现如下错误: ERROR: service failed to start, ServiceStarter thread timeout. 具体原因未知. Google中说了可能 ...