自动加载类

背景:

很多开发者写面向对象的应用程序时对每个类的定义建立一个 PHP 源文件。一个很大的烦恼是不得不在每个脚本开头写一个长长的包含文件列表(每个类一个文件)。

在 PHP 5 中,不再需要这样了。可以定义一个 __autoload() 函数,它会在试图使用当前脚本中尚未被定义的类时自动调用。通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类。(spl_autoload_register() 提供了一种更加灵活的方式来实现类的自动加载。因此,不再建议使用 __autoload()函数,在以后的版本中它可能被弃用。)

注意:

1、

在 5.3.0 版之前,__autoload 函数抛出的异常不能被 catch 语句块捕获并会导致一个致命错误。从 5.3.0+ 之后,__autoload 函数抛出的异常可以被 catch 语句块捕获,但需要遵循一个条件。如果抛出的是一个自定义异常,那么必须存在相应的自定义异常类。__autoload 函数可以递归的自动加载自定义异常类。

2、

自动加载不可用于 PHP 的 CLI 交互模式。

3、

如果类名比如被用于 call_user_func(),则它可能包含一些危险的字符,比如 ../。 建议您在这样的函数中不要使用用户的输入,起码需要在 __autoload() 时验证下输入。

4、

把所有存在extends关系的类放在同一个文件目录下,或者在实例化一个继承类的时候在文件中手工包含被继承的类;

5、

类名和类的文件名必须一致,才能更方便的使用魔术函数__autoload;

本例尝试分别从 MyClass1.php 和 MyClass2.php 文件中加载 MyClass1 和 MyClass2 类。

<?php
function __autoload($class_name) {require_once $class_name . '.php';
}$obj  = new MyClass1();
$obj2 = new MyClass2();
?>

php -- 魔术方法 之 自动加载:__autoload()相关推荐

  1. PHP自动加载__autoload的工作机制

    PHP自动加载__autoload的工作机制 PHP的懒加载lazy loading 在 2011年11月12日 那天写的     已经有 4559 次阅读了 感谢 参考或原文 服务器君一共花费了11 ...

  2. PHP的自动加载__autoload spl_autoload_register

    https://www.jb51.net/article/134372.htm 问题 传统上,在PHP里,当我们要用到一个class文件的时候,我们都得在文档头部require或者include一下: ...

  3. php autoload用法,php自动加载__autoload()函数用法

    autoload在php主版本中是自动加载文件的一个方法了我们可以定义许多的文件在目录然后通过autoload加载了,下面来看看autoload函数用法. 在PHP5之后,我们可以通过 __autol ...

  4. php自动加载和实现方法,php 自动加载方法

    class inload { /** * 类自动载入,不需要由开发者调用 * * @param string $class 类文件 */ private function autoload( $cla ...

  5. phper必知必会之类库自动加载的七种方式(三)

    ## php自动加载 下面显示例子的文件目录结构图 一.没有使用命名空间的几种实现 test/oneClass.php class oneClass{public function show(){ec ...

  6. ThinkPHP 3.2.3 自动加载公共函数文件的方法

    方法一.加载默认的公共函数文件 在 ThinkPHP 3.2.3 中,默认的公共函数文件位于公共模块 ./Application/Common 下,访问所有的模块之前都会首先加载公共模块下面的配置文件 ...

  7. thinkphp源码分析(三)—自动加载篇(Loader的分析)

    源码分析 自动加载 系统会调用 Loader::register()方法注册自动加载,在这一步完成后,所有符合规范的类库(包括Composer依赖加载的第三方类库)都将自动加载. 系统的自动加载由下面 ...

  8. php 类自动执行,php类中的魔术方法及类的自动加载

    类的模式方法都是 public 的,以 两个下划线开头,在某些情况下自动被调用,有点类似 hook 或者 事件触发. 魔术方法的传参方式不能使用引用. __construct() : 构造函数,实例化 ...

  9. php加载autoload,php自动加载类__autoload()的方法_PHP教程

    本文章来给大家简单的介绍一下关于php自动加载类__autoload()的方法,希望此方法对各位同学会有所帮助哦. 作用:当在程序中需要实例化一个类,刚好这这类又不是在本文件中,则需要用包含函数将外部 ...

最新文章

  1. Google AI 系统 DeepMind无法通过 高中数学
  2. C/C++程序训练6---歌德巴赫猜想的证明_JAVA
  3. BZOJ 1488 Luogu P4727 [HNOI2009]图的同构 (Burnside引理、组合计数)
  4. 端到端测试的滥用–测试技术2
  5. UNP Chapter 22 - 信号驱动I/O
  6. mysql command line client闪一下消失
  7. [代码] DataGrid GridView 使用区别
  8. nodejs模块之event
  9. 企业发展如何启动云的力量
  10. 王川: 重要的东西, 往往是看不见的
  11. 易门一中2021年高考成绩查询,附属易门中学2021届高二年级教师参加“中国高考评价体系下的2021年一轮备考策略”直播会...
  12. c语言各种古怪的写法
  13. 浙大计算机学院12月12日毅行,感谢参与lt;2020年秋季浙大飘渺毅行gt;
  14. Arduino+DHT11+OLED显示温湿度信息(附详细文档+源码)
  15. LabVIEW视觉功能模块下载
  16. gyb的常用lazyCopy
  17. Perl Learning 3 Subroutine
  18. 望京,承包了帝都码农圈的魔幻
  19. 蜂蜜梨文案:销售水果蜂蜜梨文案,朋友圈水果文案蜂蜜梨
  20. visio 深信服设备_深信服数据安全建设新思路,让数据泄密可视可控

热门文章

  1. (转)UIButton用法详解一
  2. Loadrunner脚本编程(3)- 检查点,关联等函数
  3. Catalyst 6000 family Architecture
  4. Q96:PT(3.2):包裹的基于噪声的纹理(Wrapped Noise-Based Textures)
  5. 数据可视化应用在哪方面
  6. Hive(五)——查询
  7. insert into 插入空值_常州插入式涡轮流量计旋进旋涡流量计价格-玮偌自控系统...
  8. oracle将字符串转成数组_【算法打卡】上升下降字符串
  9. python爬取豆瓣代码_python爬取豆瓣视频信息代码
  10. 计算机物联网知识,2016年职称计算机考试Internet基础知识:物联网