__autoload()
大家发现没,方法前面凡是带有__的 都是自动调用的,比如 __construct __destory 等
<?php /** * 作用:自动加载类 * @param 类名字 */ function __autoload($class_name){ require "./$class_name.php"; } // require './fash.php'; 如果我们不手动加载这个类,就为提示 ont found fash 为找到这个类 //启用自动加载后,没有错误 $yu=new fash(); $yu->eat(); ?>
但是呢 这个__autoload()函数 在php7.2以后就不再支持了 会有更强大的自动加载
spl_autoload_regiter() 注册给定的函数作为 __autoload 的实现
原理:内存中有个桟区,专门存放自动调用函数的,我们自己写的函数,通过spl_auto_regiter 注册后,就会指向这个区域
<?php //这里可以写php代码了 //自己创建的 加载函数,但是他不能自动调用 function load($class_name){ require "./{$class_name}.php"; } //我们可以注册多个自动调用函数,很强大 spl_autoload_register("load"); $yu=new fash(); $yu->eat(); //我会吃 成功 ?>
方法二:
<?php spl_autoload_register(function ($class_name){ require "./{$class_name}.php"; }); $yu=new fash(); $yu->eat(); //我会吃 成功 ?>