« 上一篇下一篇 »

使用-call()重载方法

以前我们介绍过一些具有特殊意义的类方法,这些方法的名称都是以双下画线开始的(_),例如,_get()、_set()、_construct()和_destruct()。另一个示例就是_call()方法,在PHP中,该方法用来实现方法的重载

方法的重载在许多面向对象编程语言中都是常见的,但是在PHP中却不是非常有用,因为我们习惯使用灵活的类型和(容易实现的)可选的函数参数。
要使用该方法,必须实现---call()方法,如下例所示:
public function -call($method,$P)
{
   if  ($method = = “display”) {
     if (is-object($P[0])) {
       $this->displayobject ($p[0]);
     } else if(is-array($p[0])) {
        $this->displayArray($p[0]);
     } else {
        $this->displayScalar($P[0]);
     }
   }
}

_call()方法必须带有两个参数。第一个包含了被调用的方法名称,而第二个参数包含了传递给该方法的参数数组。我们可以决定调用哪一个方法;如果传递的是一个数组,可以调用displayArray();如果传递的是其他内容,可以调用displayScalar()方法。

要调用以上这段代码,首先必须实例化包含这个-call()方法(命名为重载)的类,然后在调用display()方法,如下例所示:
$ov = new overload;
$ov->display(array(1, 2, 3));
$ov->display(’cat’);

第一个display()方法的调用将调用displayArray()方法,而第二个将调用displayScalar()方法。

« 上一篇下一篇 »