php奇技淫巧之自动装载
知识储备:
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,增加了美观度 如果程序员不追求代码美观跟咸鱼有什么区别
php奇技淫巧之自动装载的更多相关文章
- php类自动装载、链式操作、魔术方法
1.自动装载实例 目录下有3个文件:index.php load.php tests文件夹 tests文件夹里有 test1.php <?php namespace Tests; class T ...
- Archlinux 的U盘自动装载(三)udevil
U盘的自动装载方法,目前我已经使用过以下几种方法: udev 规则 基于 udev 规则的 Shell script udisks 以及 udisks2 结果,总是存在这样那样的小问题.例如,文件名乱 ...
- Archlinux 的U盘自动装载(一)udisks
为什么要用 udisks + udevil 方式自动装载 U 盘? Gnome 和 KDE 下的很多文件管理器都有自己的U盘装载方案.但我的应用环境为: Archlinux,xorg,Openbox, ...
- spring Bean类自动装载实现
先贴spring的开发文档,有助于大家学习http://shouce.jb51.net/spring/beans.html#beans-factory-class 一直想研究一下spring bean ...
- spring 组件自动装载示例(@ComponentScan,@Component,@Scope)
今天学习spring的bean组件装载功能,个人不太喜欢xml文件一个个配置bean的方式,所以主要学习测试注解式的自动装载方式.下面将简单说明下@Component的用法,简单入门示例献给大家. ...
- Spring-Boot自动装载servlet
Spring-Boot自动装载servlet 本人spring-boot相关博客均自己手动编写,但技术均从简书 恒宇少年 处学习,该大佬一直是我的偶像,鉴于能充分理解,所以已做笔记的方式留下这些文档, ...
- Spring核心技术(八)——Spring自动装载的注解
本文针对自动装载的一些注解进行描述. 基于注解的容器配置 @Required注解 @Required注解需要应用到Bean的属性的setter方法上面,如下面的例子: public class Sim ...
- Spring深入浅出(二)IOC的单例 ,继承,依赖,JDBC,工厂模式以及自动装载
IOC的单例模式--Bean Spring中的bean是根据scope来决定的. scope有4种类型: 1.singleton:单例模型,表示通过Spring容器获取的该对象是唯一的.常用并且默认. ...
- Spring框架——IOC 自动装载
IOC自动装载有两种形式 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...
随机推荐
- 现有exe转为服务_方式01
1.安装X.exe服务: ...>路径\X.exe /install 2.卸载X.exe服务: ...>路径\X.exe /uninstall 3.开始运行XX(程序是X.exe,服务名是 ...
- jQuery查找子元素与后代元素
1. 子元素: $().children('选择器') 如选择type为file的子元素 $(this).children("input[type=file]") 或者 $(& ...
- JS多项选择删除
$(document).ready(function(){ $("#batdel").click(function(){ var checkedLen = 0; var check ...
- vue2.0项目实战使用axios发送请求
在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource. 关于为什么放弃推荐? -> 尤 ...
- python基础-循环语句for\嵌套循环
for循环格式: for index in range(0,3):#等同于range(3),取0\1\2 print(index) index = 0 starnames = ['xr1','xr2' ...
- gradle_学习_00_资源贴
一.官方资料 1.Gradle User Guide 中文版 二.精选资料 1.Gradle学习系列之一——Gradle快速入门 2.Gradle教程
- EasyDarwin+ffmpeg进行PC(摄像头+麦克风)流媒体直播服务
上一回我们描述了用EasyDarwin+ffmpeg进行摄像机直播的过程:ffmpeg推送,EasyDarwin转发,vlc播放 实现整个RTSP直播 我们再进行一个方面的描述,那就是pc摄像头+麦克 ...
- 【JSON解析】JSON解析
前三篇博客分别介绍了xml的三种解析方法,分别是SAX,DOM,PULL解析XML,兴趣的朋友可以去看一下这[XML解析(一)]SAX解析XML,[XML解析(二)]DOM解析XML,[XML解析(三 ...
- BZOJ2288:[POJ Challenge]生日礼物
浅谈堆:https://www.cnblogs.com/AKMer/p/10284629.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?id ...
- Git 权限控制
除了 Git 命令,权限控制也是 Git 中极为重要的组成部分,本文主要介绍 GitLab 系统提供的最常用的权限控制功能. 一.分配成员角色 首先来了解下,Git 中的五种角色: 每一种角色所拥有的 ...