php自动加载类__autoload()的方法
发布:smiling 来源: PHP粉丝网 添加日期:2014-02-20 09:29:17 浏览: 评论:0
作用:当在程序中需要实例化一个类,刚好这这类又不是在本文件中,则需要用包含函数将外部文件包含进来。但是,当要用的外部类很多后,就会发现用包含函数会显得十分的繁琐,这是就可以用__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">
Tags: php 自动加载类 __autoload()
相关文章
- ·PHP 面向对象 继承(2013-11-14)
- ·PHP面向对象开发——封装关键字(2013-11-14)
- ·php-对象的声名-构造-继承-案例(2013-11-14)
- ·开发大型PHP项目的方法(2013-11-27)
- ·php $$是什么意思(2013-11-28)
- ·几个PHP面向对象小实例(2013-12-08)
- ·关于PHP中的Class的几点个人看法(2013-12-08)
- ·PHP中的面向对象和面向过程(2013-12-08)
- ·PHP5.0中多态性的实现方案浅析(2014-01-14)
- ·PHP中MVC框架之文件入口实例详解(2014-01-16)
- ·PHP autoload实现自动加载类(2014-01-16)
- ·php __call方法使用说明(2014-01-17)
- ·PHP面向对象之旅:static变量与方法(2014-01-17)
- ·php中关于抽象(abstract)类和抽象方法的问题解析(2014-02-10)
- ·PHP Class类与对象学习笔记(2014-02-10)
- ·PHP面向对象开发之魔术函数详解(2014-02-10)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)