批改状态:合格
老师批语:不错
主要内容:
[toc]
github上compsoer 是使用 php 开发的包依赖管理工具 (php 5.3.2+)
composer 依赖 packagist.org 来查询项目所依赖的组件composer 通过二个重要的配置文件(描述文件)来管理组件依赖composer.json: 项目的依赖以及依赖的描述信息(用户创建)composer.lock: 锁定依赖版本, 保持环境一致性(自动创建)composer下载的组件统一保存在vendor目录中
# 从官网下载`composer`安装脚本php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"# 执行安装脚本php composer-setup.php# 删除安装脚本php -r "unlink('composer-setup.php');"# o 当然也可以直接下载setup文件,然后通过非命令的方法进行安装。
Windows 环境下有个坑,有可能会因没有 CA 证书(公钥/私钥)而安装失败,解决方案如下:
cacert.pem证书phpstudy_pro目录下面php.ini文件,找到openssl.cafile=配置顶openssl.cafile=D:/phpstudy_pro/cacert.pem;, 重启服务器Apache/Nginx,再次运行指令根据操作系统不同, 指令与操作步骤也不相同
# macos/linux: 将`composer`命令移动到bin目录中,使之全局可用sudo mv composer.phar /usr/local/bin/composer
# 在项目目录下创建`composer.bat`,并输入以下内容@php "%~dp0composer.phar" %*# 直接执行`composer.bat`批处理,完成命令全局化
# 使用中国全量镜像(全局配置),提升组件下载速度composer config -g repo.packagist composer https://packagist.phpcomposer.com# 推荐阿里云的`composer`镜像地址composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
# 安装完成,终端执行`composer`,看到有命令帮助文本则成功# 查看版本号composer -V# 如果不是最新版本,可立刻升级到最新版本composer selfupdate
packge)的概念composer.json文件,那么整个目录就是一个”包”,如blogcomposer.json中创建name字段name字段,不影响你对依赖包的调用composer配置文档composer install指令加载vendor目录中(目录全自动创建)composer.lock锁定依赖包的版本号等信息composer init以下载Bootstrap组件为例演示:
$ composer initWelcome to the Composer config generator# 欢迎使用Composer配置生成器This command will guide you through creating your composer.json config.# 该命令将会指导您创建 composer.json 配置文件Package name (<vendor>/<name>) [zhupeter/tptest]:# 包名称: 默认为当前登录用户名和目录名二部分组件,中间用目录分隔符分开Description []: # 安装的描述,可跳过Author [, n to skip]: # 作者信息,格式必须是,John Smith <john@example.com>Peter Zhu <peter@qq.com> # 这是我的信息# 授权等直接忽略Define your dependencies.# 定义依赖,这才是关键步骤,也是必填项# 在安装包之前, 应该先进行搜索,确定该包存在(根据关键字即可)Would you like to define your dependencies (require) interactively [yes]?Search for a package: bootstrap# 这个地方如果不敲入bootstrap的话,一直直接回车,最终就会创建出composer.json文件# 搜索 "bootstrap"包Found 15 packages matching bootstrap[0] twbs/bootstrap[1] twitter/bootstrap[2] fortawesome/font-awesome...# 输入安装包对应的序号即可,例如: 0Enter package # to add, or the complete package name if it is not listed0# 输入包的版本号,直接回车Enter the version constraint to require (or leave blank to use the latest version):# 这里提示3.7是正在使用的版本,4.3+是新版本3.7.Using version ^4.3 for twbs/bootstrapSearch for a package: Would you like to define your dev dependencies (require-dev) interactively [yes]? *Please answer yes, y, no, or n.# 询问是否可以测试版本,回复: nWould you like to define your dev dependencies (require-dev) interactively [yes]? n# 下面就是即将生成的: composer.json 文件的内容{"name": "zhupeter/tptest","require": {"twbs/bootstrap": "^4.3"},"authors": [{"name": "Peter Zhu","email": "peter@qq.com"}]}# 是否确定创建该文件? 回答: 是, 将自动生成"composer.json"Do you confirm generation [yes]? yes# 询问是否现在就安装这些依赖包?# 我想以后通过"composer install"安装,现在不需要,回复: nWould you like to install dependencies now [yes]? n# composer.json 依赖配置文件创建成功, 退出ini命令,返回控制台$
composer.json中最重要的就是require字段,其它均可选
{"require": {"components/jquery": "3.4.*"}}
注:
composer.lock由 composer 自动创建和维护,用户不必干涉,也没必要理会
composer install以上面的composer.json为例,安装jQuery库
# 根据composer.json,下载指定的依赖组件库到`vendor`目录中composer install

指令会自动进行如下操作
vendor目录,并初始化它,创建必要的配置文件与自动加载入口文件packgister.org网站查询指定的组件,并从github下载到指定目录下面composer.lock文档,自动锁定下载的依赖组件的版本号注意: 再次安装并不会重复以上操作,而是直接从缓存中下载
composer update如果composer.json中的依赖版本发生变化
{"require": {"components/jquery": "3.5.*"}}
此时, composer.json与composer.lock中的版本不一致,需要更新lock文档
# 更新compoer.json中的依赖组件,并将新版本依赖写入composer.lock文档composer update
注: 此时执行
composer install无效,除非手工删除composer.lock再执行
require命令composer.json时composer.json,并将依赖组件信息写入require字段vendor目录,并初始化composer install指令安装依赖到vendor指定目录composer.lock锁定依赖组件的版本号composer.jsoncomposer.json的require字段composer install命令将依赖安装到vendor指定目录中composer.lock中将composer.json删除后再测试
require命令,相当于安装依赖包的自动批处理操作,非常方便require指定安装组件,全自动操作可防止出错create-projectgit clonevendor,自己的依赖库Laravel, ThinkPHP等
# 使用默认配置composer create-project laravel/laravel blog# 当有可用的包时,从 dist 安装composer create-project --prefer-dist laravel/laravel blog# 指定版本composer create-project --prefer-dist laravel/laravel blog 6.*
dump-autoload命令更新自动加载器PSR-4规范dumpautoloadcomposer.lock: 依赖锁定文件依赖锁定文件, 通常可以简称为: “锁文件”
功能: 将自动锁定该项目所依赖的安装包以及特定版本号
流程:
composer.lock中install命令时,将首先检查是否存在composer.lockcomposer.lock将下载它指定的版本,自动忽略composer.jsoncomposer.lock,将下载composer.json中的定义,并创建锁文件优点:任何人都可以通过这个composer.lock获得完全一致的开发环境
update命令update命令,将会根据composer.json获取依赖的最新的版本,并将新版本写到锁文件vendor/autoload.php文件require 'vendor/autoload.php';添加到你的脚本顶部
require 'vendor/autoload.php';// 假设已通过composer.json安装了monolog/logger依赖$log = new Monolog\Logger('name');// 下面就可以直接使用该类中定义的成员了
composer.json的autoload字段定义自己的autoloader
{"autoload": {"psr-4": {"app\\": "application"}}
autoload字段的解释:
PSR-4 autoloader到app命名空间PSR-4标准的加载器到app命名空间中app空间映射到目录applicationapplication目录在项目根目录,并且与vendor目录同级application/model/Staff.php,中定义app\model\Staff类再次运行composer install命令,更新 composer 的加载器vendor/autoloader.php
autoload.php将返回加载器实例,通过它还可以添加更多的命名空间
// $loader 是 autoloader 加载器实例对象$loader = require 'vendor/autoload.php';// 添加更多的命名空间到Composer的加载器中$loader->add('think', 'thinkphp/libray/think');
composer diagnose
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号