• 类的自动加载


    __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();     //我会吃  成功
    
    
    ?>
  • 相关阅读:
    StrBlobPtr类——weak_ptr访问vector元素
    StrBlob类——智能指针作为成员
    关于智能指针类型shared_ptr的计数问题
    桌面计算器——可调用对象练习
    union
    虚析构函数
    条款04 确定对象被使用前已先被初始化
    条款03 尽可能使用const
    Bugku-CTF之web8(txt????)
    Bugku-CTF之各种绕过
  • 原文地址:https://www.cnblogs.com/xiaowie/p/14277923.html
Copyright © 2020-2023  润新知