关于spl_autoload_register()和__autoload()

看两者的用法:

//__autoload用法 function __autoload($classname) {     $filename = "./class/".$classname.".class.php";     if (is_file($filename))     {         include $filename;     } }
//spl_autoload_register用法 spl_autoload_register('load_class');
function load_class($classname) {     $filename = "./class/".$classname.".class.php";     if (is_file($filename))     {         include $filename;     } }

使用spl_autoload_register()的好处是不可言喻的: (1)自动加载对象更加方便,很多框架都是这样做的:

class ClassAutoloader {     public function __construct() {         spl_autoload_register(array($this, 'loader'));     }     private function loader($className) {         echo 'Trying to load ', $className, ' via ', __METHOD__, "()\n";         include $className . '.php';     } }
$autoloader = new ClassAutoloader();
$obj = new Class1(); $obj = new Class2();

(2)你要知道__autoload()函数只能存在一次啊,spl_autoload_register()当然能注册多个函数

function a () {      include 'a.php'; }  function b () {      include 'b.php'; }  spl_autoload_register('a');  spl_autoload_register('b'); 

(3)SPL函数很丰富,提供了更多功能,如spl_autoload_unregister()注销已经注册的函数、spl_autoload_functions()返回所有已经注册的函数等。

spl_autoload_register()和__autoload()的更多相关文章

  1. spl_autoload_register()和__autoload()区别

    这篇文章主要介绍了spl_autoload_register()和__autoload()区别,需要的朋友可以参考下   关于spl_autoload_register()和__autoload(), ...

  2. php的自动加载函数spl_autoload_register和__autoload

    spl_autoload_register和__autoload是用来自动加载类的,不用每次都require,include这样搞. 先说__autoload的用法, 在同级目录建立2个文件,一个in ...

  3. spl_autoload_register和__autoload

    1.实例化一个未定义的类时会触发 2.类存在继承关系时,被继承的类没有引入的情况下,会触发 (继承关系的两个类必须在同一个目录下)  __autoload 实例化PRINTIT类,'PRINTIT'作 ...

  4. spl_autoload_register 和 __autoload()魔术方法

    在 PHP 5.3 之前,__autoload 函数抛出的异常不能被 catch 语句块捕获并会导致一个致命错误(Fatal Error).  尽管 __autoload() 函数也能自动加载类和接口 ...

  5. spl_autoload_register()和__autoload()2

    这也是OO设计的基本思想之一.在PHP5之前,如果需要使用一个类,只需要直接使用include/require将其包含进来即可.下面是一个实际的例子:   class ClassA{ public f ...

  6. PHP函数spl_autoload_register()用法和__autoload()介绍(转)

    详细出处参考:http://www.jb51.net/article/29624.htm 又是框架冲突导致__autoload()失效,用spl_autoload_register()重构一下,问题解 ...

  7. php 加载函数 __autoload(), spl_autoload_register()

    来自:http://www.cnblogs.com/myluke/archive/2011/06/25/2090119.html spl_autoload_register (PHP 5 >= ...

  8. (转)PHP函数spl_autoload_register()用法和__autoload()介绍

      转--http://www.jb51.net/article/29624.htm 又是框架冲突导致__autoload()失效,用spl_autoload_register()重构一下,问题解决 ...

  9. __autoload 与spl_autoload_register()

    PHP __autoload函数(自动载入类文件)的使用方法 作者: 字体:[增加 减小] 类型:转载 时间:2012-02-04   在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都 ...

随机推荐

  1. MessageFormat.format处理单引号和大括号

    在MessageFormat.format方法中组装jason数据字符串:{code:"w1",des:"w2"},起止分别有左大括号和右大括号.方法是将单引号 ...

  2. Android手机应用程序开发环境配置(Eclipse+Java+ADT)

    参考: Java手机游戏开发实例简明教程 http://dev.10086.cn/blog/?uid-82940-action-viewspace-itemid-1772 Eclipse下载: htt ...

  3. 如何优雅的输出PHP调试信息

    经常因为出现紧急bug而被老板骂的同事,为了更快的修复而直接利用线上的错误环境现场debug,并直接在页面上echo和dump.结果被老板发现了,又是一通臭骂.那么有没有什么办法更优雅的输出PHP调试 ...

  4. Dr.com5.2 for linux

    最近安装了在ubuntu基础上改的elementaryos,很漂亮,学校提供的破linux客户端不能连上,网上常见的也是旧版本. 最后在百度Dr.com贴吧和这个帖子 http://forum.ubu ...

  5. 使用php将数组转为XML

    <?php class Array_to_Xml { private $version = '1.0'; private $encoding = 'UTF-8'; private $root = ...

  6. HDU 2191 (13.12.2)

    悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...

  7. Python基础知识--列表和集合

    列表:有序性,可以存放任意类型的对象,通过索引访问,可以分片操作 >>> L = ['id', 1000, 'scd', 1000, 'scd'] >>> L [' ...

  8. hdu 2824 The Euler function(欧拉函数)

    如果打表的话会超内存,我想到了一种方法解决这个问题.题目给出的数据时3000000,我将三百万分成300个数据,将整万的数据存储下来,计算的时候,先计算x和y之间整万的数据,然后再计算零散数据. 想法 ...

  9. [置顶] 【VB.NET2010】在空间上显示提示气泡框的方法

    在VB6中,有ToolTip这个属性,可以设置鼠标悬浮在控件上的时候显示的图像. 而,在VB.NET中,实现这个功能需要使用一个类,ToolTip类. 代码如下(为了立即起效,建议将这些代码放在For ...

  10. C程序中唯一序列号的生成

    在实际的软件开发项目中.常常会涉及唯一序列号的生成.本文以一个实际的程序为例,介绍了唯一序列号的生成过程. 本文生成的序列号的样式为:MMDDHHMINSS_XXXXXX. 程序例如以下: /**** ...