Composer依赖管理 – PHP的利器
别再到处搜PHP类扩展包了,对于现代语言而言,包管理器基本上是标配。Java 有 Maven,Python 有 pip,Ruby 有 gem,Nodejs 有 npm。PHP 的则是 PEAR,不过 PEAR 坑不少:
- 依赖处理容易出问题
- 配置非常复杂
- 难用的命令行接口
好在我们有 Composer,PHP依赖管理的利器。它是开源的,使用起来也很简单,提交自己的包也很容易。
举个例子,平时我们开始的时候如果不是用框架,想要一个验证码,就要先去Gihutb或者其他地方找一个验证码类,然后在项目中include一下,再编辑编辑就跑起来了,以至于到后期项目维护都可能会出现问题。在Github上开源的,那还能点个watch,看到有Bug修复或新版本发布,能及时跟着升级。
如果下载的扩展包多了,就需要各种include了,还有可能出现命名空间冲突的问题,又要根据项目去更改命名空间,如果扩展包升级了,又要重新下载编辑,这是十分不方便的。所以Composer依赖管理库就这样诞生了。
上面就是Compser比较重要的需求场景。
- 能方便安装升级扩展包
- 只include就行,不用到处写include
- 避免命名空间的冲突
平时都去Github、码云等平台上找扩展包,而现在也有一个网站把所有包综合起来,也就说现在的开发方式:首先在packagist上搜索,然后用Composer安装升级。
安装Composer
傻瓜式安装的话就是直接点击https://getcomposer.org/Composer-Setup.exe,下载安装就行了,安装程序将为你下载Composer并设置你的PATH环境变量,以便你可以简单地Composer从任何目录调用。
安装的过程中需要注意的是要找到php.exe的根目录,选择正确的PHP路径。这里就不提供截图了,因为我也没下好,而且我也是手动安装的。
选择目录应该是这样的:
D:\phpStudy\php\php-7.0.-nts\php.exe
下面还是着重介绍手动安装的,我觉得这种方法十分好用:
先下载一个composer.phar文件,将phar文件放在developer文件夹中,这个你随意,不限制放在哪个文件夹中。
然后打开DOS窗口,或者快捷键windows+R输入cmd,使用以下命令,先要进入到你放置phar文件的目录
D:\developer\composer>echo @php "%~dp0composer.phar" %*>composer.bat
安装成功的标志就是在命令行输入
composer -v
显示如下内容
看到这里我就都当成Composer已经安装成功了,在中国局域网内,使用Composer是比较慢的,不过好在国内有镜像,执行如下命令切换到国内的镜像,国内镜像所做的就是缓存所有安装包和元数据到国内的机房并通过国内的 CDN 进行加速,这样就不必再去向国外的网站发起请求。
composer config -g repo.packagist composer https://packagist.phpcomposer.com
这样做就相当于全局更改了配置,我选择修改当前项目的 composer.json 的配置文件:
{
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.phpcomposer.com"
}
}
}
composer常用命令
selfupdate
更新 composer 本身,请经常执行 composer selfupdate 以保持 Composer 一直是最新版本。
composer selfupdate
等价于
composer self-update
dumpautoload
当我们更改了 composer.json 文件中的 autoload 时,需要执行 composer dumpautoload,来让 autoload 立即生效。而不必执行 install 或 update 命令。
composer dumpautoload
等价于
composer dump-autoload
dumpautoload 命令有两个常用的选项:
--optimize (-o): 转换 PSR-0/4 autoloading 到 classmap ,以获得更快的载入速度。这特别适用于生产环境,但可能需要一些时间来运行,因此它目前不是默认设置。
--no-dev: 禁用 autoload-dev 规则。
install
composer install
依据当前目录下的 composer.lock(锁文件) 或 composer.json 文件,所定义的依赖关系,安装依赖包。
install 命令会先检查 composer.lock 锁文件是否存在,如果存在,它将下载 composer.lock 文件中指定的版本,而忽略 composer.json 文件中的定义。
# 查看 composer install 的帮助信息
composer install -h
# 只安装 require 中定义的依赖,而不安装 require-dev 中定义的依赖
composer install --no-dev
update
如果你想更新你的依赖版本,或者你修改了 composer.json 中的依赖关系,想让 composer 按照 composer.json 文件中的定义执行更新操作,就用 update 命令。
composer update
require
require 命令一般用来安装新的依赖包,并将依赖写入当前目录的 composer.json 文件中。
如果 composer.json 文件中,添加或改变了依赖,修改后的依赖关系将被安装或者更新。
composer require
你也可以直接在命令中指明需要安装的依赖包。
composer require barryvdh/laravel-ide-helper
--dev 选项和 require-dev 相对应。如果你的依赖包仅仅用于开发环境,建议加上 --dev 选项。
composer require --dev barryvdh/laravel-ide-helper
create-project
你可以使用 create-project 从现有的包中创建一个新的项目。
它相当于执行了 git clone 命令后,将这个包的依赖安装到它自己的 vendor 目录。
此命令有几个常见的用途:
你可以快速的部署你的应用。
你可以检出任何资源包,并开发它的补丁。
多人开发项目,可以用它来加快应用的初始化。
# 安装 Laravel 项目
composer create-project --prefer-dist laravel/laravel blog 5.5.*
如果没有指定版本号,就默认安装最新的版本。
--prefer-dist: 当有可用的包时,从 dist 安装。
phpStudy集成环境下 安装composer失败
报错提示:
The "https://getcomposer.org/versions" file could not be downloaded: failed to open stream: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
The "https://getcomposer.org/download/1.2.0/composer.phar.sig" file could not be downloaded: SSL: crypto enabling timeout
Failed to enable crypto
failed to open stream: operation failed
1、安装composer需要开启openssl拓展 而phpstudy默认是关闭的
2、将php目录下的ssleay32.dll,libeay32.dll以及php/ext文件夹下的:php_openssl.dll 3个文件拷贝到WINDOWS\system32 文件夹下。
3、openssl需要CA证书 phpstudy也是没有的
CA证书下载地址:http://curl.haxx.se/docs/caextract.html
选中之后单击右键选择另存为
下载成功之后放到tmp文件夹下面
4、然后修改php.ini文件
openssl.cafile = "D:\phpStudy\tmp\cacert.pem"
5、重启phpStudy就可以了报错提示:
failed to open stream: HTTP request failed!
1、检查一下php的curl拓展是否开启
2、检查这两个配置是否开启。
allow_url_fopen = On
user_agent="PHP"
也可以这样配置 user_agent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)")
模拟浏览器访问也是一个不错的选择
3、开启之后重启重启phpStudy就可以了
PS: openssl.cafile 配置选项, 是 PHP 5.6.0. 以上的版本才支持的
Composer依赖管理 – PHP的利器的更多相关文章
- composer依赖管理与laravel框架安装
步骤有点多,生怕哪一天忘记,记录下来会好点 laravel安装有两种途径:1.直接在一些国内第三方网站,如:https://www.golaravel.com/download/ 下载压缩包来解压即可 ...
- PHP Composer 依赖管理的用法
1:下载 1.1:方法一: 通过PHP来安装 cd G:\web\es6 curl -sS https://getcomposer.org/installer | php #这个命令会下载compos ...
- composer php依赖管理工具
#composer是什么 Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们. composer出现之前我们php项目依赖管理大部分都是手动 ...
- Composer : php依赖管理工具
原始时代 我记得在当时用php的时候还没有composer,只有个pear,但是不好用呀,还不如直接在互联网上到处复制代码了,更快更不容易出错,当时也没有github这么好的社区工具了 总结如下 代码 ...
- Composer PHP 依赖管理工具
composer 是 PHP 用来管理依赖(dependency)关系的工具.你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件. 依赖管理 ...
- 使用composer进行依赖管理:以guzzle为例
今天突然发现一个不错的php http客户端库guzzle,欣喜不已,跃跃欲试.打开guzzle文档,发现需要composer做依赖管理.之前没有接触过composer,正好以此学习下,也蛮好! 本文 ...
- PHP之Composer类库依赖管理神器
Composer中文版说明见:https://github.com/kaka987/Composer-zh Composer 是PHP的类包依赖管理工具,用它可以轻松的引用第三方类包,类似于node的 ...
- 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 不是一个包管理 ...
随机推荐
- .NET Core System.Drawing.Common 中文乱码的坑
最近在写一个汉字取点阵的程序,最开始是在win环境下运行的,没发现什么异常,然后今天把程序放在centos 下后发现英文正常,中文完全变成两位的字了,最开始是字体的原因 在把宋体等安装到centos ...
- 一次PHP代码上线遇到的问题
exception ‘CDbException’ with message ‘The table “pms_goods” for active record class “PmsGoods” cann ...
- vue路由安装
1.安装路由: vue ui cnpm install vue-router 2.使用,导入: 默认创建项目的时候就已经帮你写好了. import router from "vue-rout ...
- Spring框架学习笔记(6)——阿里云服务器部署Spring Boot项目(jar包)
最近接外包,需要部署服务器,便是参考了网上的几篇博文,成功在阿里云服务器成功部署了Spring Boot项目,特记下本篇笔记 Spring Boot项目打包 这里说一下部署的一些问题 1.mysql驱 ...
- SpringCloud之异常报警通知(八)
在之前整合降级的基础上,整合redis,达到报警的效果(redis的启动还是之前boot里面整合的redis) order-service pom.xml <dependency> < ...
- C/C++——strcpy函数的实现
题目: 已知strcpy函数的原型是: char * strcpy(char * strDest,const char * strSrc); 1.不调用库函数,实现st ...
- Emacs 学习之旅
**Emacs 的使用过程,就像是程序员的生涯一样--路漫漫其修远兮,吾将上下而求索.** ## 万物始于 Emacs 最早知道 _Emacs_ 是从编辑器的圣战开始的,即编辑器之神--Vi,和神的编 ...
- C++等号操作符重载
在新学操作符重载时最令人头疼的可能就是一些堆溢出的问题了,不过呢,只要一步步的写好new 与 delete.绝对不会有类似的问题. 当时我们编译可以通过,但是运行会出错,因为对象s1与s2进行赋值时, ...
- numpy.array 合并和分割
# 导包 import numpy as np numpy.array 的合并 .concatenate() 一维数组 x = np.array([1, 2, 3]) # array([1, 2, 3 ...
- [考试反思]0807NOIP模拟测试14:承认
一大排并列Rank#9之一. 考试题还没改完(而且并不会模拟退火)所以题解又只能咕了 然而并不想吐槽T2对sjzyz是原题导致4个AC里面有3个他们的 虽说这次的成绩不怎么样,但是这次的考试过程是全新 ...