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 类,就可以实现这一点。