php自动加载类的实现原理
当我们news 实化一个类时,当前页面没有引入这个类,就会触发这个函数 sql_autoload_register();
给这个函数传入一个我们写好的类,执行自动加载的方法,例如
sql_autoload_register('\core\auto::load'); //执行auto类的load方法
在load方法,接收到一个参数,去引入对应的文件,就实现了自动加载类的功能了
下面是我测试的案例:
创建 index.php , core/auto.php ,core/rote.php
<?php include '/core/auto.php'; //引入自动加载类 spl_autoload_register('\core\auto::load'); //触发函数,传入自动加载类方法 new \core\rote();//实例化一个类 ?>
创建core文件夹下 core/auto.php
<?php namespace core; class auto { //接收到$class参数,加载对应的类 static public function load($class){ $file = str_replace('\\','/',$class); $file = '/'.$file.'.php'; include $file; } } ?>
创建core文件夹下 core/rote.php
<?php namespace core; class rote { function __construct(){ echo '输出测试'; } }
结果: