PSR-4自动加载器
spl_autoload_register注册加载器
namespace chapter4;
spl_autoload_register(function ($class){
//设置项目前缀
$prefix='App\edu\\';
//设置具有项目前缀类名所对应类的基目录
//App\edu\home\User==>
//App\edu\==>src/home
$base_dir=__DIR__.'\src\\';
//去掉项目前缀,获取一个真实的类名称
$real_dir=substr($class,strlen($prefix));
// die($real_dir);
$path=str_replace('\\',DIRECTORY_SEPARATOR,$real_dir);
//加上基目录和php后缀
$file=$base_dir.$path.'.php';
// die($file);
//查看文件是否存在
var_dump(file_exists($file));
file_exists($file) ? require $file:die('加载失败');
});
载入的脚本: src/home下的User.php
namespace scr\home;
class User
{
public static function test():string
{
return __METHOD__;
}
}
//echo User::class;die();
die(User::test());
实现脚本自动加载
namespace chapter4;
use App\edu\home\User;
require 'demo2.php';
//echo DIRECTORY_SEPARATOR;
echo '<br>';
User::abc();
运行结果
学习总结
1.自动加载实现按需加载,替代了require的直接载入造成的代码冗余。在没有找的情况下,自动触发加载。
2.composer在window的系统下,安装比较傻瓜式,直接下一步就可以。了解会使用了后,突然发现那么简单。
3.看往往比不上动手做,自动加载和composer首次接触,对很多知识点不是很清晰,还需要多接触才能了解的更加透彻。总想多了解一点去研究,耽搁了学习的进程,也不知道是好事情还是坏事?