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 协议》,转载必须注明作者和本文链接
推荐文章: