zoukankan      html  css  js  c++  java
  • 类的自动加载

    __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();     //我会吃  成功
    
    
    ?>
  • 相关阅读:
    PTA9
    PTA8
    第七周
    第六周
    第五周
    PTA4
    2019第三次作业
    第十周课程总结
    第九周课程总结&实验报告(七)
    第八周课程总结&实验报告(六)
  • 原文地址:https://www.cnblogs.com/xiaowie/p/14277923.html
Copyright © 2011-2022 走看看