本来想写个中二的开头,奈何没文化,算了,直接步入正题吧。今天来说 php 的好搭档--Composer。
说到 Composer,大多数 phper 应该都使用过。但是是否都和我一样,只是单纯的用过,其他的一概不知呢?ok,这并不羞耻,现在我们来了解一些 Composer 的前世今生。
文档中也明确说明了,Composer 是 php 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。并统一引用他们。
引用?这个是不有点熟悉?初学 php 时候,对于一些可以复用的逻辑方法,我们会将它们封装成一个通用文件,然后在需要用到的地方,使用 require 或 include 来引入该文件,然后就可以在需要使用的地方调用方法。后期又出现了 __autoload、spl_autoload_register,用来加载文件。但是不管使用 require、__autoload,都避免不了代码引入时候的“乱”的问题。是的,就是乱,没有一个统一管理的规则,每次需要引入新的文件,都需要去修改代码。能不能有一个工具来管理并且统一加载需要使用的文件呢?Composer 应运而生。
Composer 将这样为你解决问题:
1、你有一个项目依赖于若干个库。
2、其中一些库依赖于其他库。
3、你声明你所依赖的东西。
4、Composer 会找出哪个版本的包需要安装,并安装它们(将它们下载到你的项目中)。
作用:
1、安装并管理依赖
2、统一引入依赖。
基础使用
1、首次安装 Composer 后,需要执行初始化命令来生成 composer.json 文件,按照提示来逐步完成就可以。
$ composer init Do not run Composer as root/super user! See https://getcomposer.org/root for details Welcome to the Composer config generator This command will guide you through creating your composer.json config. # 1. 输入项目命名空间 # 注意<vendor>/<name> 必须要符合 [a-z0-9_.-]+/[a-z0-9_.-]+ Package name (<vendor>/<name>) [root/test_composer]:yourname/projectname # 2. 项目描述 Description []:这是一个测试composer init 项目 # 3. 输入作者信息,直接回车可能出现如下提示,有的系统可以直接回车,具体为什么?这里不详细介绍 Invalid author string. Must be in the format: John Smith <john@example.com> # 3.1. 注意必须要符合 John Smith <john@example.com> Author [, n to skip]: John Smith <john@example.com> # 4. 输入最低稳定版本,stable, RC, beta, alpha, dev Minimum Stability []:dev # 5. 输入项目类型 Package Type (e.g. library, project, metapackage, composer-plugin) []:library # 6. 输入授权类型 License []: Define your dependencies. # 7. 输入依赖信息 Would you like to define your dependencies (require) interactively [yes]? # 7.1. 如果需要依赖,则输入要安装的依赖 Search for a package:php # 7.2. 输入版本号 Enter the version constraint to require (or leave blank to use the latest version): >=5.4.0 # 如需多个依赖,则重复以上两个步骤(7.1/7.2) Search for a package: # 8. 是否需要require-dev, Would you like to define your dev dependencies (require-dev) interactively [yes]? { "name": "dduan/test_compser", "description": "这是一个测试composer init 项目", "type": "library", "require": { "php": ">=5.4.0" }, "authors": [ { "name": "John Smith", "email": "john@example.com" } ], "minimum-stability": "dev" } # 9. 是否生成composer.json Do you confirm generation [yes]? # 现在安装依赖项吗 Would you like to install dependencies now [yes]?
- 按照提示逐步完成后,会生成 composer.json 文件,后期直接更新 composer.json 文件,使用 install 命令来安装依赖文件即可。
- 完成 composer.json 文件的引导编辑并确认安装依赖后,就会安装已编辑的依赖文件,后期安装其他依赖文件只需要编辑 composer.json 文件并执行 composer install 命令即可,就像下文中的操作一样。
2、安装依赖文件
- composer.json
文件中指定 require
key 的值。你只需要简单的告诉 Composer 你的项目需要依赖哪些包。
{ "require": { "monolog/monolog": "1.0.*",
"包名称":"版本号",
} }
- 执行命令 composer install 安装依赖。
3、自动加载。
对于库的自动加载信息,Composer 生成了一个 vendor/autoload.php
文件。你可以简单的引入这个文件,你会得到一个免费的自动加载支持。
require 'vendor/autoload.php';
然后你就可以操作依赖文件了。
锁文件
在安装依赖后,Composer 将把安装时确切的版本号列表写入 composer.lock
文件。这将锁定改项目的特定版本。当然,当你更新了某一个依赖后,也会更新锁文件。
后期团队中的其他人员通过 composer install 来安装依赖时,会优先检查锁文件是否存在,存在的话则安装文件中的指定版本,这也就保证了任何人建立项目都将下载与指定版本完全相同的依赖。如果锁文件不存在,则会按照 composer.json 来安装依赖,但是这样就很难保证版本一致性。通常都会要求 composer.json、composer.lock
文件是同时存在的。
常用命令
- composer search monolog 搜索包
- composer require monolog 安装包
- composer update [monolog/monolog] 更新包
- composer remove [monolog/monolog] 移除包
- composer show 展示所有安装包
常用的操作就这些啦,后面有其他需要直接查询文档即可。后面贴上文档链接。加油,打工人。
参考文件:
https://zhuanlan.zhihu.com/p/133857206
https://docs.phpcomposer.com/01-basic-usage.html
https://www.runoob.com/w3cnote/composer-install-and-usage.html