类的自动加载spl_autoload_register()

类的自动加载

  • 应用场景:开发人员开发程序时,为了方便类的管理,通常都会按一个类写一个类文件,就会存在各种各样的类文件,在引入时,不得不把所有类文件全部require,这样会增加程序负担,占用内存,且后期维护不方便。使用类的自动加载机制,可以按需加载类文件。

  • 类文件的命名规范:

    • 一个类要单独定义成一个类文件
    • 类文件主名字,要与类名一致
    • 类文件扩展名,建议要以“.class.php”结尾
  • 类自定义加载函数:spl_autoload_register();

    • 注意:PHP<7版本 使用__autoload()实现类自动加载,PHP>=7使用spl_autoload_register()实现类自动加载
    • 调用时机:
      • 使用new关键字创建不存在的类的对象时,自动调用
      • 当使用静态化方式访问一个不存在的类时,自动调用
      • 当继承一个不存在的类时,自动调用
      • 当实现一个不存在的接口时,自动调用
  • 语法格式

    • 描述:把该函数注册到SPL(标准PHP库)的_autoload函数队列中,如果该队列中的函数尚未激活,则激活它们。它实际上创建了autoload函数的队列,按定义时的顺序逐个执行。
    • 语法:boolean spl_autoload_register([callbasck $autoload_function])
    • 参数:$autoload_function 欲注册的自动加载的函数,可以是匿名函数,也可以是字符串的函数名称。
  • 使用有名函数方法自动加载类

    <?php
    //使用类自动加载函数,注册自动加载规则
    spl_autoload_register('autoload_rule');
    function autoload_rule($className){
        //该函数中会接收new Student()的类名 ,
        //可以根据类目组装required文件的路径,实现动态加载需求类
        $classPath ='./Lib/'.$className.'.class.php';
        if(file_exists($classPath)){
            require_once($classPath);
        }else{
            die("{$classPath}未找类文件");
        }
    }
    //当new一个不存在的类时,就激活spl_autoload_register()函数,把类目传入autoload_rule函数中进行之定义的规则进行处理
    $student = new Student();    
           
    ?>
        
    
  • 使用匿名函数方法自动加载类

    <?php
    //使用匿名函数方法的进行自动加载类
    spl_autoload_register(function($className){
        $classPath ='./Lib/'.$className.'.class.php';
        if(file_exists($classPath)){
            require_once($classPath);
        }else{
            die("{$classPath}未找类文件");
        }
    });
    
    $student = new Student();    
    ?>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值