PHP中的重载技术

本文介绍了PHP中的重载技术。通常面向对象语言的重载是指类中有多个同名但参数不同的方法,而PHP不支持这种方式。PHP的重载包括属性重载和方法重载,属性重载在属性不存在时会自动调用__get()等方法,方法重载在调用不存在的方法时会自动调用__call()等方法,这些方法被称为“魔术方法”。

PHP中的重载技术

通常面向对象语言的重载技术

其基本语法是这样的:

在一个类中,有多个同名的方法,每个方法的参数不同而已。这种现象就称为“重载”。

参数不同可以是:数量个数不同,或类型不同,或顺序不同。

比如:

class  A{

int  function  f1(int  x){......}

int  function  f1(int  x,  int  y){.....}

int  function  f1(string s   int  m){....}

}

但,在php中,一个类中,根本就不可以定义多个同名方法——这直接是语法错误。

实际上,php中的重载,是另一个“概念”,其指的是:

属性重载: 如果使用一个不存在的属性,就会去自动调用类中预先定义好的某个方法以处理数据;

方法重载: 如果使用一个不存在的方法,就会去自动调用类中预先定义好的某个方法以处理该行为

属性重载

属性有哪些使用情形?其实跟变量一样,只有4种使用情形:

取值:$v1 = 对象->属性;

赋值:对象->属性 = XX值;

判断是否存在:isset(对象->属性;)

销毁:unset(对象->属性;)

所谓属性重载,就是在面对上述4种情形的属性使用场景中,该对象如果来“应对”的问题。

如果某属性不存在,但在语法中使用如下情形,则会发生:

取值:$v1 = 对象->属性;               ===>自动调用类中的__get()方法

赋值:对象->属性 = XX值;           ===>自动调用类中的__set()方法

判断是否存在:isset(对象->属性;)     ===>自动调用类中的__isset()方法

销毁:unset(对象->属性;)                  ===>自动调用类中的__unset()方法

前提都是:类中要预先定义好这些方法。

方法重载

当使用一个对象调用一个不存在的普通方法的时候,会自动去调用预先定义好的"__call"方法。

当使用一个对象(类)调用一个不存在的静态方法的时候,会自动去调用预先定义好的"__callStatic"方法。

其中,该方法必须带2个参数。其实跟前面一样!

 

上面所学的几个方法都被称为“魔术方法”:

__get(), __set(),  __isset(), __unset(),  __call(),  __callstatic();

转载于:https://www.cnblogs.com/zsyzsyzsyzsyzsy/p/10916481.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值