美文网首页
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 类的自动加载

    当两个 class 类分别对应两个脚本文件的时候,双方都不能在自己的文件中随意的调用另一个类,需要通过 inclu...

  • PHP 使用总结

    自动类加载 (auto-load) 自动类加载说白了就是自动 include / require php 文件,这...

  • ThinkPHP5.1.x 框架源码分析之框架的灵魂

    一、类的自动加载初始 框架的灵魂,类的自动加载 为什么说是框架灵魂呢,一般框架都会有类的自动加载,当引入文件很多的...

  • 从零开始打造自己的PHP框架——第1章

    目标 本篇,我们来实现类库自动加载,以及路由解析。 类库自动加载 常规加载 常规加载一般使用include或者re...

  • TP5学习笔记一 自动加载

    ThinkPHP5.0真正实现了按需加载,所有类库采用自动加载机制,并且支持类库映射和composer类库的自动加...

  • composer自动加载

    理解自动加载函数的原理 在实例话一个类时,如有全局的自动加载函数,则会将类的命名空间及类名传入到加载函数,然后由加...

  • SpringBoot 自动配置个人理解

    SpringBoot先加载所有的自动配置类 xxxxxAutoConfiguration 每个自动配置类按照条件...

  • 类的自动加载

    这些内容是从慕课网上看到的,讲了3中类的自动加载方法,试了一下,没毛病。具体见下面代码

  • Spring Boot的自动配置原理

    一、引导加载自动配置类@SpringBootApplication @SpringBootApplication是...

  • TP5源码解读——自动加载

    自动加载原理 TP5把自动加载的方法集成到一个Loader类中。关键代码如下: 查看类库原文件:https://g...

网友评论

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

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