专注于WEB技术的IT博客

php面向对象之__autoload()

时间:2013-06-17分类: php浏览:3900
分享到:

    在php设计面向对象的程序开发时,通常为每个类的定义都单独建立一个PHP源文件。当你尝试使用一个未定义的类时,PHP会报告一个致命错误。


    在PHP5之前,很多设计者对每个类的定义建立一个 PHP 源文件,然后在每个脚本开头写一个长长的包含文件列表(每个类一个文件),这意味着如果你要在一个程序文件中实例化100个对象,那么你必须用include或者require包含100个类文件,或者把这100个类定义在同一个类文件中,这样处理的结果显得很烦琐而且容易出错。


    在 PHP 5 中,不再需要这样了。可以定义一个 __autoload() 函数,它会在试图使用尚未被定义的类时自动调用。通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类。


在下例中将通过实例来说明 __autoload() 是如何使用的。


首先定义一个类ClassA,文件名为ClassA.class.php

class ClassA{
 public  function funa(){
  echo "classA  loaded successfully!<br>";
 }
}


然后在相同目录下再定义另一个类ClassB,文件名为ClassB.class.php,ClassB继承ClassA

<?php
class ClassB extends ClassA {
 public function funb(){
                                                    
  echo "classB also loaded successfully!<br>";
 }
}


最后在与上面两个文件相同目录下再定义一个autoload.php(这个文件名随便取)

<?php
function __autoload($class_name) {
    require_once ("./".ucfirst($class_name).'.class.php');//ucfirst使类名首字母转换为大写
}
$obj = new ClassB();
$obj->funa();
$obj->funb();
?>


运行autoload.php的程序,看结果:


classA loaded successfully!

classB also loaded successfully!


从上面的实例我们看到了__autoload神奇的魔术效果(自动包含导入类文件)!当然上面只包含了两个类文件,如果要包含几百或上千个类文件,你才体会到__autoload的伟大之处。




猜你喜欢
php面向对象之__call处理错误调用
php面向对象之__toString()
PHP面向对象之const常量修饰符
php面向对象之final的应用
php面向对象之克隆对象
PHP面向对象之对象和引用
php面向对象之类的静态成员
php面向对象之子类中重载父类的方法
php面向对象的访问类型控制
php面向对象编程之类的继承性
标签 : php 面向对象
除非注明,本文首发网志博客,欢迎转载!转载请注明本文地址:http://w3note.com/web/112.html,谢谢。
  • 评论
  • 赞助本站