知识储备:

spl_autoload_register https://www.php.net/manual/zh/function.spl-autoload-register.php

测试目录结构

<?php
include "load.php";
Tests\Test1::test();

------------index.php

<?php
class Loader
{
    static function loadClass($class)
    {
        $class =  __DIR__.DIRECTORY_SEPARATOR.str_replace('\\','/',$class).'.php';
        $class = strtolower($class);
        if (file_exists($class)) {
            include $class;
            return;
        }
    }
}
spl_autoload_register(array('Loader','loadClass'));

------------load.php

<?php
namespace Tests;
class Test1{
    static function test(){
        echo __CLASS__."\n";
        echo __FILE__."\n";
    }
}

----------./test/test1.php

测试结果:

自动装载的实现很简单

思考:1、是不是使用时才会触发?

<?php
include "load.php";
Tests\Test1::test();

function aa(){
    Tests\Test2::test();
}

echo "测试加载顺序 \n";

aa();

写了一个小实验 同test1的test2,通过注释aa(),证明只有在调用时才会加载执行

这样一来动态装载的价值就体现出来了

1、调用时候才加载该文件,减少了实际执行文件大小   幻想一下一个大文件里面调用其中一个函数只需加载该函数依赖的文件就可以了,而不是整个文件依赖的文件

2、不用在头部一通require/include,增加了美观度   如果程序员不追求代码美观跟咸鱼有什么区别

最新文章

  1. 65279 !!!BOM
  2. 哈夫曼树---POJ3253
  3. Oracle、SQL Server、MySQL分页方法
  4. 一些JavaScript题目
  5. C++ string的大小写转换
  6. javascript在alert()出现中文乱码
  7. 实时人脸检测 (Real-Time Face Detection)
  8. H3C SecPath F100-C 防火墙配置说明
  9. C#集合之并发集合
  10. 修改hosts不必重启 立刻生效
  11. 基于emWin的WAV,MP3软解软件播放器,带类似千千静听频谱,含uCOS-III和FreeRTOS两个版本
  12. Mac对gdb签名
  13. 廖雪峰Java9正则表达式-2正则表达式进阶-3分组匹配
  14. HTML常用标签2
  15. 基于jQuery+HTML5加入购物车代码
  16. 写了一个Hy的vscode语法高亮插件
  17. html回顾随笔JS(*^__^*)
  18. 【转】Mysql学习---MySQL悲观锁中的排它锁
  19. 一个.net程序客户端更新方案
  20. MySQL 中间件 mycat 的使用

热门文章

  1. SpringBoot2.0之整合RabbitMQ
  2. Java 面试题问与答:编译时与运行时
  3. BioNLP概述
  4. java.io.InvalidClassException 异常解决, 实现Serializable接口的注意事项
  5. SQL嵌套子查询和相关子查询的执行过程有什么区别(推荐)
  6. JS常用工具类代码
  7. Idea_学习_01_Idea激活
  8. Java企业微信开发_01_接收消息服务器配置
  9. Gym - 100570C: Subrect Query (巧妙的单调队列)
  10. ACM学习历程—Hihocoder [Offer收割]编程练习赛1