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

文章正文

别再到处搜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自学中心。大家一起学习,相互交流,共同进步!

让学习成为一种习惯

你可能想看:
« 上一篇
下一篇 »

相关推荐

php实时推送,php实地培训

2026年10月05日

53阅读

php乱码出现问号的原因,php乱码出现问号的原因有哪些

2026年10月05日

44阅读

php一句话木马,一句话木马ctf

2026年10月05日

48阅读

php获取数组长度,php中如何获取数组的长度

2026年10月05日

50阅读

php面试题库及答案,php程序员面试真题库

2026年10月05日

47阅读

phpcontent-type修改,php源码二次修改需要多少钱

2026年10月05日

42阅读