Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:自动 加载的原理并不复杂, 关键是了解前提
include require require_once
)
// 1、传统方式:( `include` `require` `require_once` )
// ①加载类文件
require_once 'app\controller\User.php';
require_once 'app\controller\Index.php';
// ②注册类别名[可选]
use app\controller\User;
use app\controller\Index;
// ③调用类成员
echo User::show();
echo '<br>';
echo Index::show();
spl_autoload_register()
// 2、注册自动加载函数 `spl_autoload_register()`
// ①加载类文件
spl_autoload_register(function($class){
// 获取类的路径名称
// DIRECTORY_SEPARATOR 可以随操作系统不同,使用不同的目录分隔符
$path = str_replace('\\', DIRECTORY_SEPARATOR, $class);
// 生成一个完整的类文件名
$classFile = __DIR__ . '/' . $path . '.php';
// 加载类文件
require $classFile;
});
// ②注册类别名[可选]
use app\controller\User;
use app\controller\Index;
// ③调用类成员
echo User::show();
echo '<br>';
echo Index::show();
files
文件方式)
# composer.json
{
"autoload": {
"files": [
"app/controller/User.php",
"app/controller/Index.php"
]
}
}
得到composer支持文件:autoload.php 及相关配置文件
// 3、composer中的自动加载(`files`方式)
// ①加载类文件(引用composer自动加载文件)
require_once __DIR__ . '/vendor/autoload.php';
// ②注册类别名[可选]
use app\controller\User;
use app\controller\Index;
// ③调用类成员
echo User::show();
echo '<br>';
echo Index::show();
classmap
类映射方式)
//第1步:创建composer.json文件
# composer.json
{
"autoload": {
"classmap": [
"app/controller"
]
}
}
//第2步:打开vscode终端,输入安装命令
//composer install
// 3、composer中的自动加载(`files`方式)
// ①加载类文件(引用composer自动加载文件)
require_once __DIR__ . '/vendor/autoload.php';
// ②注册类别名[可选]
use app\controller\User;
use app\controller\Index;
// ③调用类成员
echo User::show();
echo '<br>';
echo Index::show();
// composer中的自动加载(`files`方式)
// ①加载类文件(引用composer自动加载文件)
require_once __DIR__ . '/vendor/autoload.php';
// ②注册类别名[可选]
use app\controller\User;
use app\controller\Index;
// ③调用类成员
echo User::show();
echo '<br>';
echo Index::show();
include
require
require_once
方式逐个调用,非常繁琐;spl_autoload_register()
使用非常方便,如果不想使用composer管理,推荐使用该方式;files
、classmap
、psr-4
方式,推荐使用psr-4
方式。