background image

PHP

 

     中使用方法的多态性

 

 

PHP 中,我们可以根据传递给方法的参数数量和类型来决定执行不同的代码。

PHP 没有支持方法多态性的内在特性。但是,可以模仿可变类型检测函数。像下面的

combine()函数就使用了 is_ numeric()

 

、 is_ string()  

、 is array()和 is_ bool():

// combine() adds numbers, concatenates strings, merges arrays,

// and ANDs bitwise and boolean arguments

function combine($a, $b) {

if (is_int($a) && is_int($b)) {

return $a + $b;

}

if (is_float($a) && is_float($b)) {

return $a + $b;

}

if (is_string($a) && is_string($b)) {

return "$a$b";

}

if (is_array($a) && is_array($b)) {

return array_merge($a, $b);

}

if (is_bool($a) && is_bool($b)) {

return $a & $b;

}

return false;

}

因为 PHP 不允许我们在方法原型中声明变量的类型,因此就不能像 Java 和 C++那样

基于方法的定义来有条件地调用不同的方法。不过,我们可以声明一个函数并使用 switch

语句来手工地重建这一特性。

例如,PHP 可以让我们通过 GD 来编辑图像。如果能向一个图像类中传递图像的位置 

(远程或者本地)或者 PHP 已经指定给当前图像流的句柄将是很方便的。下面例子显示的

pc_Image 类,就可以实现这一点。