美文网首页
7.4 类的自动加载

7.4 类的自动加载

作者: 57fc17b7d598 | 来源:发表于2017-06-23 17:24 被阅读26次

    当两个 class 类分别对应两个脚本文件的时候,双方都不能在自己的文件中随意的调用另一个类,需要通过 include 或是 require 引入后才实例化。

    但如果一个脚本文件中引入了太多的脚本之后,又会显得有点笨重了。

    因此PHP提供了类的自动加载技术,原理是当你在实例化的时候,如果没有前置引入,那么本来PHP会立即报错并同时提示找不到这个 class 类的,但现在提供了一个机会,它会在当前环境中查找你是否有对spl_autoload_register等函数进行过处理,如果有的话,先将类名等信息丢过去看看,如果成功处理了这个错误的话,则相安无事,否则就报错。

    // 类的自动加载
    spl_autoload_register(function($className){
        // 路径分隔符,也就是 /
        $opt = DIRECTORY_SEPARATOR;
        // 完整路径
        $path = __DIR__.$opt.'vendor'.$opt.'demo'.$opt.strtolower($className).".class.php";
        // 输出路径
        echo "<p>$path</p>";
        // 引入文件
        require_once($path);
    });
    
    // 实例化
    $date = new Date();
    // 打印属性
    var_dump($date);
    
    // 实例化
    $math = new Math();
    // 打印属性
    var_dump($math);
    

    spl_autoload_register() 函数的参数是一个回调函数,在这个回调函数中能获得 你未经引用而直接调用的类名,再根据这个类名找到它对应的路径,使用require引入,就能解决类名找不到的异常错误了。

    更多相关内容可以查看官方提供的 SPL 标准库

    相关文章

      网友评论

          本文标题:7.4 类的自动加载

          本文链接:https://www.haomeiwen.com/subject/zuwccxtx.html