本文实例讲述了PHP面向对象程序设计重载(overloading)操作。分享给大家供大家参考,具体如下:
重载
PHP中的”重载”与其它绝大多数面向对象语言不同,只是他们都是用的相同的名词而已。传统的”重载”是用于提供多个同名的 类方法,但各方法的参数类型和个数不同。 PHP所提供的”重载”(overloading)是指动态地”创建”类属性和方法。当调用当前环境下未定义或不可见的类属性或方法时,重载方法会被调用。是通过魔术方法(magic methods)来实现的。
一般来说,把类中的成员属性都定义为private的,这更符合现实的逻辑,能够更好的对类中成员起到保护作用。但是,对成员属性的读取和赋值操作是非常频繁的,而如果在类中为每个私有属性都定义可以在对象的外部获取和赋值的公有方法,又是非常非常烦恼的。因此在PHP5.1.0以后的版本中,预定义了两个方法“__get()”和“__set()”,用来完成对所用私有属性都能获取和赋值操作,以及用来检查私有属性是否存在的方法“__isset()”和用来删除对象中私有属性方法“__unset()”。
通俗一点来说,重载在php中的含义是指,当一个对象或类使用其未定义或不可见的属性和方法时,其中的一些“处理机制”。
属性重载
对一个对象不存在的属性进行使用时,这个类中预先设定好的应对办法(处理机制)。
属性,本质就是变量,其只有4个操作:
取值:
当对一个对象不存在(未定义或不可见)的属性进行“取值”时,就会自动调用方法:__GET()
方法不区分大小写。
赋值:
当对一个对象不存在(未定义或不可见)的属性进行“赋值”时,就会自动调用方法:__SET()
判断(isset):
当对一个对象不存在(未定义或不可见)的属性进行isset()判断时,就会自动调用方法:isset()
销毁(unset):
当对一个对象不存在的(未定义或不可见)属性进行unset()判断时,就会自动调用方法:unset()
以上4个方法,被称为魔术方法。
魔术方法
__GET($属性名):
在对一个对象不存在的属性进行“取值”的时候,会自动调用的方法,其中该方法可以带一个形参,表示要对之取值而又不存在的属性名(字符串),可以使用该方法对意外情况进行某种特殊的处理。