• 🐯 php项目中类的自动加载


    主要函数:spl_autoload_register() — 注册给定的函数作为 __autoload() 的实现

     

    将函数注册到SPL __autoload函数队列中。如果该队列中的函数尚未激活,则激活它们。

    如果在你的程序中已经实现了__autoload()函数,它必须显式注册到__autoload()队列中。因为spl_autoload_register()函数会将Zend Engine中的__autoload()函数取代为spl_autoload()spl_autoload_call()

    如果需要多条 autoload 函数,spl_autoload_register() 满足了此类需求。 它实际上创建了 autoload 函数的队列,按定义时的顺序逐个执行。相比之下, __autoload() 只可以定义一次。

    <?php
    
    // $class 类名
    function autoloader_1($class) {
        include 'classes/' . $class . '.class.php';
    }
    
    function autoloader_2($class) {
        include 'classes/' . $class . '.class.php';
    }
    
    // 可以多次使用,但 __autoload() 函数只能使用一次。
    spl_autoload_register('autoloader_1');
    spl_autoload_register('autoloader_2');
    
    // 或者,自 PHP 5.3.0 起可以使用一个匿名函数
    spl_autoload_register(function ($class) {
        include 'classes/' . $class . '.class.php';
    });

    php类的自动加载实例:

    index.php文件

    <?php
    
    define("BASEDIR", __DIR__);
    include BASEDIR . "/app/Loader.php";
    // 自动加载类及文件
    spl_autoload_register('\app\Loader::Autoload');

    app目录下的Loader.php文件

    <?php
    
    namespace app;
    
    class Loader
    {
        static function autoload( $class )
        {
            require BASEDIR . '/' . str_replace('\', '/', $class) . '.php';
        }
    }
  • 相关阅读:
    运算符优先级问题
    文件操作工具,需者自取
    Text文档编码识别方法
    删除重复文件的程序
    修道士和野人问题
    猜数字游戏
    存储器层级图
    IL指令汇总
    输入1~8,每个数字不重复
    厦门大学线下编程比赛第一题:求和
  • 原文地址:https://www.cnblogs.com/qingsong/p/11511871.html
Copyright © 2020-2023  润新知