别再到处搜PHP类扩展包啦!Composer才是依赖管理利器
文章正文

不要再四处搜索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
若是傻瓜式安装,直接点击下载安装即可,安装程序会为你下载Composer,还会设置你的PATH环境变量,如此一来,你就能在任何目录简单地调用Composer了。
安装过程中,需要注意找到php.exe的根目录,要选择正确的PHP路径。这里不提供截图,因为我没下载好,并且我是手动安装的。
选择目录应该是这样的:
D:\phpStudy\php\php-7.0.12-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配置,仓库为packagist,使用composer,链接为https://packagist.phpcomposer.com
这么做等同于对配置进行了全局更改,我决定修改当前项目的composer.json配置文件:
{
"repositories": {
"packagist": {
"type": "composer",
"url":
}
}
}
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 命令有两个常用的选项:
转换PSR-0/4自动加载到classmap,能获得更快的载入速度,这就是optimize (-o)的作用,它特别适用于生产环境,不过运行可能需要一些时间,所以目前它不是默认设置。
--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相对应,若你的依赖包仅用于开发环境,那么建议加上该选项。
composer require 开发人员巴里·范德·霍夫(barryvdh)的laravel-ide-helper
create-project
你能够运用create-project,从现有的包里面,创建出一个新的项目。
它等同于执行了git clone命令,之后,把这个包的依赖安装到它自身的vendor目录 。
此命令有几个常见的用途:
你可以快速的部署你的应用。
你可以检出任何资源包,并开发它的补丁。
多人开发项目,可以用它来加快应用的初始化。
# 安装 Laravel 项目
composer create-project 优先选择laravel/laravel博客5.5.*版本
如果没有指定版本号,就默认安装最新的版本。
当存在可用的包时,选择从dist进行安装 。
phpStudy集成环境下 安装composer失败
报错提示:
The 网址为https://getcomposer.org/versions的链接 file could not be downloaded: failed to连接尝试失败,原因是连接方在一段时间后没有正确答复,且连接的主机没有反应 。
The 这是一个网址链接,具体为https://getcomposer.org/download/1.2.0/composer.phar.sig 。 file could not可被下载,SSL,加密启用超时
Failed to enable crypto
failed to开放流:操作失败。
安装composer时,需要开启openssl拓展,然而phpstudy默认状态下是关闭该拓展的。
把ssleay32.dll这个文件,从php目录下拷贝到WINDOWS\system32文件夹下,把libeay32.dll这个文件,从php目录下拷贝到WINDOWS\system32文件夹下,把php_openssl.dll这个文件,从php/ext文件夹下拷贝到WINDOWS\system32文件夹下 。
3、openssl需要CA证书 phpstudy也是没有的
CA证书下载地址:
选中之后单击右键选择另存为
下载成功之后放到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及以上版本才支持它。
以上是文章全部内容,若有想要进行学习与经验交流的,可添加PHP自学中心。大家一起学习,相互交流,共同进步!
让学习成为一种习惯