推荐php自动加载类autoload的方法
发布时间:2023-10-26 11:37:08 所属栏目:PHP教程 来源:互联网
导读: 作用:当在程序中需要实例化一个类,刚好这这类又不是在本文件中,则需要用包含函数将外部文件包含进来。但是,当要用的外部类很多后,就会发现用包含函数会显得十分的繁琐,这是就可以
作用:当在程序中需要实例化一个类,刚好这这类又不是在本文件中,则需要用包含函数将外部文件包含进来。但是,当要用的外部类很多后,就会发现用包含函数会显得十分的繁琐,这是就可以用__autoload()全局函数自动加载类。 当在index.php中要使用前面三个类时,就需要写三个例如include("name.class.php") 这样的方法,效率会十分低,但如果使用了__autoload()函数就不用这样麻烦了,只需要写这样一个函数方法就可以了: 在 PHP 5 中,不再需要这样了。可以定义一个 __autoload() 函数,它会在试图使用尚未被定义的类时自动调用。通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类。 在下例中将通过实例来说明 __autoload() 是如何使用的。 首先定义一个类ClassA,文件名为ClassA.class.php 代码如下 1 class ClassA{ 2 public function funa(){ 3 echo "classA loaded successfully! "; 4 } 5 } 然后在相同目录下再定义另一个类ClassB,文件名为ClassB.class.php,ClassB继承ClassA 代码如下 1 class ClassB extends ClassA { 2 public function funb(){ 3 4 echo "classB also loaded successfully! "; 5 } 6 } 最后在与上面两个文件相同目录下再定义一个autoload.php(这个文件名随便取) 代码如下 1 2 function __autoload($class_name) { 3 require_once ("./".ucfirst($class_name).'.class.php');//ucfirst使类名首字母转换为大写 4 } 5 $obj = new ClassB(); 6 $obj->funa(); 7 $obj->funb(); 8 ?> 运行autoload.php的程序,看结果: classA loaded successfully! classB also loaded successfully! 例子: 文件夹下有这样几个文件: User.class.php; Person.class.php; Message.class.php; index.php; 我们就可以这样操作 代码如下 1 index.php 2 function __autoload($className){ //ucfirst() 将字符串首字母变为大写 3 include("ucfirst($className)".class.".php"); } 4 /************** *例如:在index.php文件中实例化User.class.php中的User类,如果不存在则自动调用__autoload()函数 代码如下 1 *,将类名User作为参数传入 2 *************/ 3 $user=new User(); 4 //通过自动加载类调用User.class.php文件 5 $person=new Person(); 6 //通过自动加载类调用Person.class.php文件 7 $Message=new Message(); 8 //通过自动加载类调用Message.classphp文件 function="" message="new" person="new" user="new"> (编辑:成都站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐