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();     //我会吃  成功
    
    
    ?>
  • 相关阅读:
    linq.js
    ES6入门
    Visual Studio Code之常备快捷键
    JavaScript——数组
    谈程序员的出路
    优秀博文
    多媒体封装格式详解---MP4
    音视频文件分析工具
    offsetof(s,m)解析
    GCC 提供的原子操作
  • 原文地址:https://www.cnblogs.com/xiaowie/p/14277923.html
Copyright © 2011-2022 走看看