类的自动加载

__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();     //我会吃  成功


?>
原文地址:https://www.cnblogs.com/xiaowie/p/14277923.html