Composer 实战
Composer: PHP项目的包依赖管理工具;
本质:是一个加强版本的自动加载器;
1. 下载与安装
2. 局部安装
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"php composer-setup.phpphp -r "unlink('composer-setup.php');"
3. 全局安装
方法1
下载:https://getcomposer.org/Composer-Setup.exe ,直接安装
方法2
1.找到并进入 PHP 的安装目录(和你在命令行中执行的 php 指令应该是同一套 PHP)。2.将 composer.phar 复制到 PHP 的安装目录下面,也就是和 php.exe 在同一级目录。3.在 PHP 安装目录下新建一个 composer.bat 文件,并将下列代码保存到此文件中。4.复制 `@php "%~dp0composer.phar" %*`5.最后重新打开一个命令行窗口试一试执行 composer --version 看看是否正确输出版本号。
4. Composer.json
1.自动创建: `composer init`2.手工创建: `composer.json` , `{}`3.执行`composer install`,不会安装任何包,只是为了创建指定的文件和目录创建这个空的composer.json是为了创建`vendor`目录该目录下,有自动加载器文件,和一个composer的管理目录1. `composer.lock`:composer.json中的包版本锁定文件2. `vendor目录`:第三方包,以及composer 的自动加载器\ 1.`autoload.php`:composer的自动加载器 2.`composer目录`:自动加载器的配置项(系统维护)
5. 自动加载器
1.`composer.json`:中添加`autoload`字段,声明依赖包的路径.2.`composer dumpautoload`:将autoload字段声明注册到composer中项目中需要用到的自动加载的文件有那些?1.普通文件:config/database.php2.类文件:xxx.class.php 1.自己的类文件 2.第三方类文件
5.1 加载非 class 文件
1.配置 composer.json内容:
{ "autoload": { "files": [ "config/database.php", "lib/common.php" ] }}
2.在终端运行: composer dumpautoload
,将autoload字段注册到composer中,注册后,在vendor/composer下面生成 autoload_files.php文件.
5.2 加载class文件
{ "autoload": { "files": [ "config/database.php", "lib/common.php" ], "classmap":[ "inc/", "src/Base.php" ] }}
composer dumpautoload
后自动生成的文件:vendor/composer/autoload_classes.php,如下:
$vendorDir = dirname(__DIR__);$baseDir = dirname($vendorDir);return array( 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', 'hello\\Test1' => $baseDir . '/inc/class1.php', 'hello\\Test2' => $baseDir . '/inc/class2.php', 'world\\Model' => $baseDir . '/src/Base.php',);
5.3 PSR-4 自动加载规范
PSR:(Standard Recommerdations) PHP FIG 组织制定的推荐标准
PSR-4 要求
类空间映射到类的文件路径
类名与类文件同名
一个类文件只允许存在一个类
5.4 实战:安装第三方包
5.4.1 安装常规包:catfan/medoo:php数据库框架
composer.json 中添加
require
字段
"require": { "catfan/medoo": "^2.1" }
# 无composer.lock composer install # 有composer.lock composer update # 三合一指令 composer require catfan/medoo # 移除包 composer remove
5.4.2 脚手架
以安装thinkphp
为例
# 安装目录架构和源码composer create-project topthink/think# 只安装源码,没有目录架构composer require topthink/framework