PHP 类的自动加载详细介绍 leyangjun
2014-07-24 18:25
267 查看
<span style="font-size:18px;">自动加载类库文件: 当类多了以后,比如要在一个文件中载入3个类库文件:a.class.php,b.class.php,c.class.php要用三个require_once(‘classes/a.class.php); require_once(‘classes/b.class.php); require_once(‘classes/c.class.php); 可以用PHP5自动加载的功能来处理:在全局应用配置文件中,定义一个特殊的函数__autoload($class)函数(__autoload并不是一个类的方法,只是单独的函数,和类没有关系): function __autoload($class){ require_once(“classes/$class) } 该函数放哪没有关系,在创建类实例时,也不必去调用这个autoload函数。PHP会自动完成。但务必注意一点:“在调用页面上创建实例所使用的类名称”、和“被调用的文件名”、以及“该文件中的类的名称”3个必须是一样的。这样就不需要去调用__autoload();如果不一样则必须单独调用__autoload(‘c’);并给它一个文件名前缀。如: c.class.php文件的代码是: class c{ public $m=7; } ?>这里代码的类名称是c,而文件名也是c, 现在要在index.php调用: function __autoload($class){ require_once “$class.class.php”; } $m = new c(); //创建实例调用的类也是c echo $m->m; ?> 此时PHP会自动调用根目录下的c.class.php中的类C。 但如果c.class.php中的代码是: class mm{ public $m=7; } ?> 而调用页index.php代码是: function __autoload($class){ require_once “$class.class.php”; } # __autoload(‘c’); //如果不加这一行就会出错。 $m = new mm(); echo $m->m; ?> 会出错,提示找不到mm.class.php文件。这时可以加一行__autoload(‘c’);但这样就达不到简化代码的目的。 类的家族化扩展:类的高级功能: 一、对象克隆: 当克隆一个对象的实例时,其属性初始值继承了被克隆对象的当前值。 class test { public $p=5; function __clone(){ //只在克隆发生时起作用。用于改变在克隆时某些值 $this->p=15; } } $a=new test(); echo $a->p; $a->p=8; //如果没有__clone()方法影响,$b的P值将为8 $b = clone $a; echo $b->p; //15</span>
相关文章推荐
- 关于Thinkphp3.2 命名空间的说明-php5.3命名空间介绍-TP自动加载
- PHP 命名空间与自动加载机制介绍
- PHP 命名空间与自动加载机制介绍
- PHP 命名空间与自动加载机制介绍
- PHP 命名空间与自动加载机制介绍
- PHP 命名空间与自动加载机制介绍,spl_autoload_register, __autoload 函数
- 使用Pear风格+php自动加载
- PHP OPCode缓存:APC详细介绍
- 网页实例:详细介绍用PHP来编写网页记数器
- php面向对象全攻略 (十七) 自动加载类
- Linux chkconfig 详细介绍 (附:Linux Enterprise5 下自动启动 Mysql 和Apache的配置)
- php自动加载的两种实现方法
- 【小结】SPL 自动加载(from《PHP高级程序设计 模式、框架与测试》)
- 详细介绍PHP应用提速面面观
- PHP的autoload自动加载机制使用说明
- PHP的autoload自动加载机制使用说明
- PHP自动加载class文件的方案
- 详细介绍用PHP来编写网页记数器
- 详细介绍PHP应用提速面面观
- Extjs列表详细信息窗口新建后自动加载解决方法