php自动加载类__autoload()的方法
作用: 当在程序中需要实例化一个类,刚好这这类又不是在本文件中,则需要用包含函数将外部文件包含进来。但是,当要用的外部类很多后,就会发现用包含函数会显得十分的繁琐,这是就可以用__autoload()全局函数自动加载类。
当在index.php中要使用前面三个类时,就需要写三个例如include("name.class.php") 这样的方法,效率会十分低,但如果使用了__autoload()函数就不用这样麻烦了,只需要写这样一个函数方法就可以了:
在 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!
实例:文件夹下有这样几个文件:
User. class .php; Person. class .php; Message. class .php; index.php;我们就可以这样操作,代码如下:
index.php
function __autoload( $className ){ //ucfirst() 将字符串首字母变为大写 include ( "ucfirst($className)" . class . ".php" ); }例如: 在index.php文件中实例化User.class.php中的User类,如果不存在则自动调用__autoload()函数,代码如下:
//将类名User作为参数传入 *************/ $user = new User(); //通过自动加载类调用User.class.php文件 $person = new Person(); //通过自动加载类调用Person.class.php文件 $Message = new Message(); //通过自动加载类调用Message.classphp文件 function="" message="new" person="new" user="new">查看更多关于php自动加载类__autoload()的方法 - php面向对象的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did29678