如何使用PHP依赖管理工具Composer

admin3年前PHP教程32
目录
前言安装Composercomposer常用命令selfupdatedumpautoloadinstallupdaterequirecreate-projectphpStudy集成环境下 安装composer失败
前言

别再到处搜PHP类扩展包了,对于现代语言而言,包管理器基本上是标配。Java 有 Maven,Python 有 pip,Ruby 有 gem,Nodejs 有 npm。PHP 的则是 PEAR,不过 PEAR 坑不少:

依赖处理容易出问题配置非常复杂难用的命令行接口

好在我们有 Composer,PHP依赖管理的利器。它是开源的,使用起来也很简单,提交自己的包也很容易。

举个例子,平时我们开始的时候如果不是用框架,想要一个验证码,就要先去Gihutb或者其他地方找一个验证码类,然后在项目中include一下,再编辑编辑就跑起来了,以至于到后期项目维护都可能会出现问题。在Github上开源的,那还能点个watch,看到有Bug修复或新版本发布,能及时跟着升级。

如果下载的扩展包多了,就需要各种include了,还有可能出现命名空间冲突的问题,又要根据项目去更改命名空间,如果扩展包升级了,又要重新下载编辑,这是十分不方便的。所以Composer依赖管理库就这样诞生了。

上面就是Compser比较重要的需求场景。

1.能方便安装升级扩展包

2.只include就行,不用到处写include

3.避免命名空间的冲突

平时都去Github、码云等平台上找扩展包,而现在也有一个网站把所有包综合起来,也就说现在的开发方式:首先在packagist上搜索,然后用Composer安装升级。

安装Composer

傻瓜式安装的话就是直接点击getcomposer.org/Composer-Setup.exe,下载安装就行了,安装程序将为你下载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 config -g repo.packagist composer packagist.phpcomposer

这样做就相当于全局更改了配置,我选择修改当前项目的 composer.json 的配置文件:


{
    "repositories": {
        "packagist": {
            "type": "composer",
            "url": "packagist.phpcomposer"
        }
    }
}
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 "getcomposer.org/versions" file could not be downloaded: failed to open stream: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

The "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证书下载地址:curl.haxx.se/docs/caextract

选中之后单击右键选择另存为

下载成功之后放到tmp文件夹下面

4、然后修改php.ini文件

openssl.cafile = "D:\phpStudy\tmp\cacert.pem"

5、重启phpStudy就可以了报错提示:

1 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依赖管理工具Composer的详细内容,更多关于使用PHP依赖管理工具Composer的资料请关注其它相关文章!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

海外站群服务器有什么用处

许多做海外业务的站长会租用一台站群服务器来建立自己的海外网站。一些新手用户不了解海外站群服务器有什么用处?在这篇文章中,小编总结了海外站群服务器的一些功能,用于网站优化和获取高质量流量,希望能帮助到大...

php文件下载后无法打开的处理方案及代码

PHP下载图片后文件打开显示损坏问题用php写个图片下载方法,测试发现下载的图片大小都没问题,但是无法打开文件。解决方法如下:首先打开文件下载代码,增加ob_clean();flush();完整下载图...

再谈PHP错误与异常处理

目录一、异常与错误的概述PHP中什么是异常PHP中什么是错误上面的说法是有前提条件的PHP异常处理很鸡肋?二、ERROR的级别三、PHP异常处理中的黑科技1:set_error_handler()2:...

显卡GPU服务器的特点和优势是什么租用成都显卡服务器有哪些方面的优势

显卡服务器也称为GPU服务器。GPU服务器是一种用于计算机科学技术领域的计算机硬件及其配套设备。其主要功能有:3D地理空间数据可视化、视频稳定、滤波、马赛克、转码等应用研究与教育,如成像与处理等天体物...

一台韩国服务器能承载多少用户取决哪些因素

一台韩国服务器能承载多少用户取决哪些因素?一台韩国服务器能承载的用户数量取决于多种因素,以下是一些主要因素:服务器硬件配置:服务器的处理器、内存和硬盘空间等硬件配置越高,服务器就能够处理更多的请求和流...

微信小程序结合ThinkPHP5授权登陆后获取手机号

1.在我们授权登陆后会获取到用户的 sessionKey 这个是获取手机号不可分割的一部分上代码wxml:<button open-type="getPhoneNumber"...