DIY 实现 ThinkPHP 核心框架(五)Composer
什么是 Composer ?
Composer 是 PHP 用来管理依赖关系的工具,可以通过它自动安装这些依赖的库文件。此外,Composer 可以实现类的自动加载以及创建自己的包。 Composer 的安装 非常简捷。
实现类的自动加载
在 /home/web/mytp 目录下创建 composer.json 文件
{
"autoload": {
// 仿 ThinkPHP 构建命名空间 app
"psr-4": {"app\\": "application/"}
}
}
上述代码表示自动加载的类文件须遵循 PSR-4 规范, app\\ 表示命名空间 app , application/ 表示 application 目录,含义为将命名空间 app 映射到 application 目录,需要加载命名空间 app 的类时,在 application 目录中查找相应文件。命名空间 app 的子命名空间会映射为 application 目录下的对应目录。
命名空间 目录
app\index\controller\Index <=> application/index/controller/Index.php
进入到 composer.json 所在目录,执行 composer install 命令初始化自动加载,并安装相应依赖关系所需组件。正常情况下输出
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files
操作完成后,当前目录下会生成一个 vendor 目录,结构如下
vendor
├── autoload.php
└── composer
├── autoload_classmap.php
├── autoload_namespaces.php
├── autoload_psr4.php
├── autoload_real.php
├── autoload_static.php
├── ClassLoader.php
├── installed.json
└── LICENSE
需要更新依赖包或者库文件时,只需修改 composer.json 的文件至需要的版本,再执行 composer update 命令。引入命名空间机制后,类名无需显示控制器或者模板的名称,更改如下
EmployeeController.php => Employee.php
EmployeeModel.php => Employee.php
// 相应文件中的类名也需要做更改以符合 PSR-4 规范
在入口文件 index.php 中引入 vendor/autoload.php
<?php
require '../vendor/autoload.php';
编辑 Shell 脚本 start.sh 实现 Nginx 与 Php-fpm 开机自启
#!/bin/bash
#chkconfig:2345 80 30
#description:auto_run
#
#
/usr/local/nginx/sbin/nginx
/usr/local/php/sbin/php-fpm
systemctl stop firewalld
添加脚本到开机自动启动项目中
chkconfig --add start.sh
访问 diy.tp/index.php
类的自动加载功能已经实现
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu
推荐文章: