zoukankan      html  css  js  c++  java
  • 🐯 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';
        }
    }
  • 相关阅读:
    ORACLE中的TOP-N查询(TOP-N分析)、分页查询
    ORACLE复杂查询之子查询
    ORACLE复杂查询之连接查询
    利用rand7() 产生rand10()(腾讯)
    汉罗塔1(递归和分治)
    数位dp(不要62)
    数位dp(二进制01问题)
    多重背包
    模拟(所有边权)
    模拟(进制)
  • 原文地址:https://www.cnblogs.com/qingsong/p/11511871.html
Copyright © 2011-2022 走看看