网上关于SPL spl_autoload_register的用法的例子有很多很多,自己也查看了很多,但感觉介绍得并不太详细,使自己真正能明白其中的原理苦闷了好一会儿。现将自己的理解记录下来。

关于 Standard PHP Library (SPL) 的 autoload 的方法,这些都是 PHP 5.1.2 之后才加上的方法。为了方便,这里做了一些设定。假设你有类文件,放在/home/user/class/foo.class.php, 你当前的文件为/home/user/webroot/test.php, 示例代码如下。

在文件test.php中:

<?phpclass autoload
{ public static function load( $class name ) {$filename = "/home/user/class/".$classname."class.php";if (file_exists($filename )) { require_once $filename ; } }
} function __autoload( $class name )
{ // 这个是默认的 autoload 方法$filename = "/home/user/class/".$classname."class.php";if (file_exists($filename )) { require_once $filename ; }
} // 注册一个 autoloader
spl_autoload_register( 'autoload::load' );
/**
* __autoload 方法在 spl_autoload_register 后会失效,因为 autoload_func 函数指针已指向 spl_autoload 方法
* 可以通过下面的方法来把 _autoload 方法加入 autoload_functions list
*/
spl_autoload_register( '__autoload' ); // 注:下面的类看上去没有定义,但其实系统根据sql_autoload_register提供的路径会自动去/home/user// /class/*.class.php下搜索foo.class.php文件,如果没找到才报错。
$foo = new foo();
$foo ->bar();
?>

SPL spl_autoload_register 初体验 (转)相关推荐

  1. 苹果电脑安装python3密码_mac系统安装Python3初体验

    前沿 对于iOS开发不要随便拆卸系统自带的Python,因为有很多 library 还是使用 Python2.7. 1 安装Xcode 1.1 App Store 搜索Xcode 并安装 1.2 安装 ...

  2. MapReduce编程初体验

    需求:在给定的文本文件中统计输出每一个单词出现的总次数 第一步: 准备一个aaa.txt文本文档 第二步: 在文本文档中随便写入一些测试数据,这里我写入的是 hello,world,hadoop he ...

  3. 小程序 缩放_缩放流星应用程序的初体验

    小程序 缩放 by Elie Steinbock 埃莉·斯坦博克(Elie Steinbock) 缩放流星应用程序的初体验 (First Experiences Scaling a Meteor Ap ...

  4. wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验

    wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言 2 下载.安装wxWidgets 3 wxWidgets应用程序初体验 4 wxWidgets学习资料及利用方法指导 5 ...

  5. 用鸿蒙跑了个 “hello world”!鸿蒙开发初体验

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源 | https://my.oschina.net/u ...

  6. Windows Embedded Standard开发初体验(二)

    支持Silverlight的Windows Embedded Standard 好了,完成安装之后,我们就可以来做Windows Embedded Standard的第一个操作系统镜像了.在开始菜单中 ...

  7. 深度探索Hyperledger技术与应用之超级账本初体验(附部署代码)

    2019独角兽企业重金招聘Python工程师标准>>> 本章零基础地介绍了如何快速体验超级账本搭建的区块链网络,我们先绕过了比较复杂的初始化配置,用官方提供的fabric-sampl ...

  8. Spring环境搭建,IoC容器初体验~

    由于最近的任务是关于IoC配置文件格式的转换,所以需要从Spring的IoC容器开始学起,今天根据网上的介绍搭建了Spring环境,并对其IoC容器进行了初体验.文章中涉及到的软件以及推荐的一本关于S ...

  9. 来自新手Banana Pi香蕉派初体验

    2019独角兽企业重金招聘Python工程师标准>>> 一.前言 一段时间来对有强大的技术支持和完善的社区的Raspberry Pi很感兴趣,本想入一片学习学习,但转念一想Raspb ...

最新文章

  1. Xamarin Essentials教程地理定位Geolocation
  2. react native 的底部导航栏以及跳转页面带参数
  3. nodejs-EventEmitter
  4. 同盾科技完成 7280 万美元 C 轮融资
  5. 编译OSG的FreeType插件时注意的问题
  6. oracle监控工具ignite使用图解
  7. 公司注销后公章怎么处理,自行保管风险
  8. [leetcode]Flatten Binary Tree to Linked List
  9. 数据库实时同步技术解决方案
  10. c libxml2库的编译和使用
  11. vivado SRIO 学习
  12. html控制word打印在一张页面,HTML文件到WORD文档双面打印三步曲
  13. 个人开发者基于可编程Web的产品尝试:QCon会前采访FaWave作者李华煜
  14. 使用git push没有报错,但是远程仓库没有更新的问题
  15. [IOS]swift如何换行
  16. 计算机启动时老是检测,笔记本电脑开机时总是自检怎么办 【详解】
  17. css中clip:rect用法
  18. 【LeetCode】第374题——猜数字大小(难度:简单)
  19. 100天精通Python丨办公效率篇 —— 12、Python自动化操作 office-word(word转pdf、转docx、段落、表格、标题、页面、格式)
  20. 高并发 收获大厂Offer必不可少的利器

热门文章

  1. iOS 百度地图使用详解
  2. Best jQuery Plugins of 2010
  3. 使用mod_proxy_balancer实现负载均衡
  4. java位运算符取反_java运算符
  5. python代码块所属关系的语法-天元高校邦数据科学通识课【Python基础语法】答案...
  6. python1000个常用代码-比较了1000多个Python开源项目,精选出这34个
  7. python菜鸟工具-第一行Python代码之菜鸟逃离记
  8. python快速编程入门教程-半小时带你快速入门Python编程,Python快速入门教程
  9. python手机版下载官方-Python3.6.6
  10. python绘制3维图-Python 画出来六维图