Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:自动加载很有意思, 也很重要, 假如一个初学者, 看了你的博客 , 能否理解这个技术呢? 还有, 再过上几个月, 你再回看这些作业 , 还能看明白吗? 请多写点注释和说明吧
psr是PHP推荐编码规范的简称
要创建一个自动加载器要遵循以下几步
-使用__autoload()函数或spl_autload_register()函数
-创建项目前缀
-创建项目前缀所对应的文件基目录
-获取真实类名
-将真实类名的分隔符,转换成文件目录分隔符
-组成文件名
-加载文件名对应的php文件
注意:需要自动加载的文件的储存路径必须和自动加载的文件名一致,且命名空间也是;
以下是遵循PSR-4的简单的自动加载器
<?php
namespace chapter3;
//创建自动加载器
spl_autoload_register(function ($class){
// 创建项目前缀
$prefix = 'app\home\\';
// 创建类名前缀所对应的文件基目录
$base = __DIR__ . '\src\\';
// var_dump($base);
// 获取真实类名
$real = substr($class, strlen($prefix));
// var_dump($real);
// 将命名空间分隔符,替换成目录分隔符
$path = str_replace('\\',DIRECTORY_SEPARATOR,$real);
// 获取文件名
// echo '<br>';
$file_name = $base . $path . '.php';
// var_dump($file_name);
// echo '<br>';
file_exists($file_name) ? require $file_name : die('文件不存在,加载失败');
});
//echo DIRECTORY_SEPARATOR;
-安装composer
-在packagist.org中下载需要自动加载的组件
以下是用composer实现简单的验证码组件自动加载
<?php
namespace chapter3;
//验证码
//加载PSR-4的自动加载器
require __DIR__ . '\vendor\autoload.php';
//导入验证码组件的空间别名
use Gregwar\Captcha\CaptchaBuilder;
//实例化验证码类
$builder = new CaptchaBuilder;
//生成验证码
$builder->build();
//内联验证码
$img = $builder->inline();
//放进图片中,在页面显示
echo '<img src=" ' . $img . ' " >';