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=" ...
随机推荐
- mac下搭建前端自动化工程
好多年没有接触前端,发现前端行业发生了巨大的变化,很多新鲜术语,比如node.git.grunt.less.sass.预编译.自动化.模块化等等,看得让人晕头转向,不要担心,我会把这之前之后学习成果都 ...
- 手把手编写PHP框架 深入了解MVC运行流程
1 什么是MVC MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller ...
- 【python】关于函数递归使用 return 后,收到数据为 None。
在写一个辗转相除求最小公因数的程序的时候,突然发现自己不管怎么写(除了两数恰巧可以整除),return 返回的值恒为 none. 代码为此: def gcd(a,b): if a%b==0: retu ...
- mysql数据库更新
在使用mysql数据库的时候,A方使用一个版本,B方在使用一个版本数据库进行开发使用,B方在开发的时候,有新的需求,需要添加表字段和所需要的表.但是A方已经在使用之前的版本数据库并且数据库里面有真实的 ...
- Centos7部署NFS
server1:192.168.1.189 ###客户端 server2:192.168.1.190 ##服务端 1.首先创建共享目录. mkdir -p /data/share 安装nfs ...
- 每天一个linux命令(13):more命令
版权声明更新:2017-05-17博主:LuckyAlan联系:liuwenvip163@163.com声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 本文介绍了Linux下面的mv命令. 2. ...
- android开发中 解决服务器端解析MySql数据时中文显示乱码的情况
首先,还是确认自己MySql账户和密码 1.示例 账户:root 密码:123456 有三个字段 分别是_id .username(插入有中文数据).password 1)首先我们知道 ...
- Python:extend和append的用法
转于:https://www.cnblogs.com/subic/p/6553187.html 博主:subic 1)list.append(object) 向列表中添加一个对象object2)lis ...
- 使用root直接安装python3.5.2
操作系统:Centos7.4 不使用pyenv管理器直接进行编译安装3.5.2版本. 下载tgz的包,如果没有安装wget,请yum -y install wget 解压python包: 将解压后的包 ...
- VC6.0 工程转到VS2010一些问题的描述及解决方法
下列为VC6.0 工程转到VS2008一些问题的描述及解决方法 //////////////////////////////////////////////////////////////////// ...