php 执行命令-PHP开发者必须知道的一个包依赖管理工具:Composer

Composer是一个非常流行的PHP包依赖管理工具,它已经取代了PEAR包管理器。 PHP开发人员有必要掌握Composer。

对于用户来说,Composer 非常简单。 通过简单的命令,将需要的代码包下载到vendor目录下,然后开发者就可以导入该包并使用。

关键在于你的项目定义的composer.json,它可以定义项目需要依赖的包(可能有多个),依赖的包可能会依赖其他包(这就是组件的好处),你不必担心这些,Composer 会手动下载你需要的一切,一切都在composer.json 的定义中。

Composer对于用户来说非常透明,但其背后的概念仍然需要理解。 它的诞生并非偶然。 得益于 Github 的快速发展,PHP 语言变得越来越现代、越来越强大。

为了理解Composer,首先要理解它的结构:

作曲家结构

Composer 命令行工具:

这个理解比较简单。 通过用户定义的Composer.json下载您需要的代码。 如果你只是简单的使用Composer,那么掌握一些具体的命令就足够了。

自动加载代码加载器:

通过Composer,开发者可以通过多种方式使用它,关键在于PHP的命名空间的概念和PSR-4标准的制定。 Composer刚刚根据这两个开发了一个代码手动加载器

GitHub:

有了Github,PHP开发者就可以在里面托管开源代码,而Composer的开发也是从Github开始的,Composer实质上就是将Github上的代码下载到本地。

包装师:

对于用户来说,使用的是Composer的命令行工具,那么命令行工具如何知道用户可以使用多少个包呢? 这主要依赖Packagist,它是Composer的主要包信息存储库。 包开发者将具体代码托管在Github上,并将包信息提交给Packagist,以便用户可以通过Composer使用。

Composer根据本地定义的composer.json信息查询Packagist,Packagist根据Composer.json/Package.json信息进行分析,最终对应到github仓库。 Composer最终下载代码时,还依赖于Github仓库上的Composer.json。 这里涉及到了三种类型的composer.json,分别具有不同的含义。

作曲家.json:

这是Composer的核心,也是Composer的规则。 上面提到了 Composer.json 的三种类型。 使用时一定要注意区分。 当我还是个初学者的时候,我总是搞砸了。

Composer 命令行工具

作曲家初始化

用户可以在自己的项目下创建composer.json来定义您项目的依赖项,也可以通过composer init交互创建composer.json。

作曲家安装

应该是最常用的命令了。 Composer会按照本地的composer.json安装包,将下载的包放到项目下的vendor目录下php 执行命令,并将安装时的包版本信息加载到composer.lock中,以锁定版本。

事实上,在安装时,如果发现composer.lock版本与当前vendor目录中的代码版本一致,Composer将不执行任何操作。 Composer.lock的目的是让你安心地在当前版本中工作,并且不会获取最新版本的包。

作曲家更新

那么如何更新composer.lock来获取最新版本的包呢? 您可以通过此命令更新软件包的最新版本

作曲家配置

这个命令还是建议理解,全局配置保存在COMPOSER_HOME/config.json,非全局配置信息保存在项目目录下。

作曲家配置--list -g

作曲家配置-g安装时通知 false

作曲家全局配置 bin-dir --absolute

作曲家创建项目

这个命令并不常用,但是我个人认为非常重要。 使用普通的install命令是将项目的所有依赖包下载到项目的vendor目录下。 而通过这个命令,所有的代码及其依赖包都被放到了一个目录中,相当于执行了一个 git clone 命令。 通常,软件包的开发者可能会使用此命令来修复错误。

作曲家全球

这是一个全局安装命令,它允许您在 COMPOSER_HOME 目录中执行 Composer 命令,例如 install、update。 当然,你的COMPOSER_HOME必须在$PATH环境中。

例如执行composer global require fabpot/php-cs-fixer,现在就可以全局运行php-cs-fixer命令行了。 如果以后想更新,只需要运行composer global update

作曲家转储自动加载

当您更改项目下的composer.json文件时,无需运行composer update命令来更新它。 有时您可以使用此命令来更新加载程序。 例如,您想引用本地自定义包(不是来自 packagist ),稍后将通过实践来解释。

作曲家要求

如果composer.json文件是自动或交互创建的,则可以直接使用此命令来安装包

作曲家需要 cerdic/css-tidy:1.5.2

作曲家需要“ywdblog/phpcomposer:dev-master”

--prefer-source 和 --prefer-dist 参数

--prefer-dist:对于稳定的软件包,Composer安装一般默认使用该参数php 执行命令,也可以促进安装。 例如,可以直接从 packagist 安装相应的包,而无需实际从 Github 下载包。

–prefer-source:如果使用该参数,将直接从Github安装。 安装完包后,vendor目录中也有丰富的.git信息

作曲家需要“ywdblog / phpcomposer:dev-master”--prefer-source

#在vendor/ywdblog/phpcomposer目录下有丰富的.git信息

如何向 Composer 添加代理

国外用Composer下载很慢,可以通过两种方式加速

作曲家配置 repo.packagist 作曲家“”

编辑composer.json

“存储库”:{

“包装主义者”:{

“类型”:“作曲家”,