有A类和B类,如果在A类实例化B类,最简单直接的方法就是在B中使用include require_once A的文件,但是这种方法显然是不友好的,在框架中叶不是这么做的,在框架中使用的是自动加载的机制也成为懒加载。

php中自动加载使用spl_autoload_register来完成在没有指定类的情况下自动加载的动作,有了这个方法在new一个类之前,就算没有引入这个类的文件,也能正确初始化指定类,这样我们就不用使用include require_once来引入文件,其实这个方法就是对include方法的封装,同时需要自己实现。下面举个?,并说明其原理

下面这段是autolod.php的源码:

 1 <?php
 2 spl_autoload_register(array('autoload','load'));
 3 class autoload{
 4     public static function load($classnName){
 5         if ( !class_exists($classnName) ) {
 6             $file = $classnName.'.php';
 7             require_once('./'.$file);
 8
 9         }
10     }
11 }
12 $class = new autoload_test();
13 $class->test();

下面这段是autolod_test.php的源码:

1 <?php
2 class autoload_test{
3     function test(){
4         echo 'this is test';
5     }
6 }

代码很简单,但是足以说明spl_autoload_register自动加载的机制,在代码执行的过程中,当new一个未包含的类的时候,php会去执行spl_autoload_register中的第一个参数,就是需要new的类名,这个函数的功能就是把没有引入的类引入进来,但是有个前提就是类的名字和文件的名字要一致,这样就实现了自动加载的功能,是不是很简单。

spl_autoload_register这个方法还有另一种常用的调用方式spl_autoload_register(array($className,$functionName));使用指定的类中的静态方法去完成自动加载,静态方法里面的结构就是完成autoload里面的逻辑。

转载于:https://www.cnblogs.com/zzq919101/p/10458106.html

php之自动加载(懒加载)相关推荐

  1. html 分页 惰性加载,懒加载实现的分页网站footer自适应

    最近在做手机端,发现下拉刷新和上拉加载的jq控件很少而且自我感觉不好用,比如iscroll之类-- 然后自己写了个懒加载的,也很简单,最基础的代码[不喜勿喷,但蛮实用的] wap手机端懒加载分页: 用 ...

  2. Vue7 异步加载 懒加载

    vue开发过程中,我们会做出特别多特别多的组件,包括login,header,footer,main等等.这样使整个网站看起来就十分的庞大,当我们在打开网页的时候,突然一下子把这些所有的组件加载上来, ...

  3. Entity Framework Core 懒加载

    众所周知在EF 6 及以前的版本中,是支持懒加载(Lazy Loading)的,可惜在EF Core 并不支持,必须使用Include方法来支持导航属性的数据加载.不过现在EF Core的开发团队打算 ...

  4. 源码-03-九宫格 封装 懒加载 plist

    九空格雏形-- 每一行的列数,行间距,列间距 %决定了列数,/决定了行数.->来计算每个格子的x和y的位置: 1 #import "ViewController.h" 2 3 ...

  5. 【Android】Fragment懒加载和ViewPager的坑

    本篇文章已授权微信公众号 安卓巴士Android开发者门户 独家发布 效果 老规矩,先来看看效果 ANDROID和福利两个Fragment是设置的Fragment可见时加载数据,也就是懒加载.圆形的旋 ...

  6. 前端性能优化总结/懒加载、函数节流、优化dom操作、雪碧图、合并文件

    1.减少 HTTP 请求数量 在浏览器与服务器进行通信时,主要是通过 HTTP 进行通信.浏览器与服务器需要经过三次握手,每次握手需要花费大量时间.而且不同浏览器对资源文件并发请求数量有限(不同浏览器 ...

  7. 聊一聊前端图片懒加载背后的故事

    本文内容 什么是懒加载 如何实现懒加载 监听滚动事件 IntersectionObserver 浏览器原生方案 本文小结 相信大家已经注意到我博客有了一点变化,因为博主最近利用空闲时间对博客进行了优化 ...

  8. 图片预加载与图片懒加载

    图片预加载与图片懒加载 图片预加载 图片预加载主要是针对非icon类图片. 加载快,有良好的用户体验. 提前加载图片,当用户需要查看时可直接从本地缓存中渲染.可能因为图片很大,浏览器显示出它会用很长的 ...

  9. html如何实现页面懒加载,原生JS如何实现图片懒加载

    懒加载简介 什么是图片懒加载 懒加载其实就是延迟加载,是一种对网页性能优化的方式,比如当访问一个页面的时候,优先显示可视区域的图片而不一次性加载所有图片,当需要显示的时候再发送图片请求,避免打开网页时 ...

  10. 高级技巧!Python装饰器里面的懒加载,真香!

    摄影:产品经理 禁止钓鱼 假设我们有一个工具类MongoUtil,它的作用是封装一些数据库操作.例如: import pymongoclass MongoUtil:def __init__(self) ...

最新文章

  1. Java之String类
  2. pacman安装ubuntu_Ubuntu如何安装pacman
  3. syslog 向内存中缓存_漫谈缓存(Cache)、大规模芯片系统的存储层次结构优化以及开源仿真工具ZSim...
  4. pyecharts 应用6 三维曲面图
  5. CSS3动画---移动端上下固定高度,中间自适应
  6. Selenium两万字大题库
  7. java 保留字符串,如何在Java中保留字符串而不使用反转功能
  8. Eclipse使用SVN操作说明
  9. Warning:mailcious javascript detected on this domain来由
  10. uniapp 自定义头部 支持微信、百度、头条小程序
  11. 【论文随笔5】Context-Aware Transformer Transducer for Speech Recognition
  12. TPSHOP商城软件测试环境搭建过程
  13. 2022-04-13 Ambient Light Proximity Sensor 光感和距离传感器 STK3311X调试记录 RK3566 Android11平台
  14. 巴菲特经典演讲《价值投资为什么能够持续战胜市场》
  15. 华师大 OJ 3023
  16. Errorcode? Thread1: EXC_BAD_ACCESS (code=EXCi386_GPFLT)
  17. 大学生python期末解答题_大学mooc2020年用Python玩转数据期末考试大全答案
  18. 为什么要禁止除GET和POST之外的HTTP方法?
  19. CF808E Selling Souvenirs
  20. 孙正义:未来30年的人工智能和物联网

热门文章

  1. spring手动配置
  2. 【BZOJ4591】[SHOI2015]超能粒子炮·改 (卢卡斯定理)
  3. 吃大小写的亏,上符号的当
  4. CYQ.Data V5 从入门到放弃ORM系列:教程 - MAction类使用
  5. SSL:Ubuntu证书配置
  6. 一 ASP.NET Html 表单
  7. uva 12426 Counting Triangles 计算几何
  8. 分享我第一次做项目的感受
  9. qhfl-3 Course模块
  10. python车辆轨迹分析_Ngsim数据集分析与python处理,NGSIM,解析,及