多个函数用同一个名字,但参数表,即参数的个数或(和)数据类型可以不同,调用的时候,虽然方法名字相同,但根据参数表可以自动调用对应的函数。 PHP4 中仅仅实现了面向对象的部分的、简单的功能,而 PHP5 以后对对象的支持就强大的多了。 对于多态的实现,PHP4 只支持覆盖(override),而不支持重载(overload)。但我们可以通过一些技巧来“模拟”重载的实现。 PHP5 虽然可以支持覆盖和重载,但重载在具体实现上,和其他语言还有较大的差别。 1,在 PHP4 中“模拟”重载 试看以下代码: <?PHP
//根据参数个数选择执行不同的方法(在 PHP4 中模拟"重载"(多态的一种) class Myclass
{
function Myclass()
{
$method = "method" . func_num_args();
$this->$method();
} function method1($x)
{
echo "method1";
} function method2($x,$y)
{
echo 'method2';
}
} //通过在类中的额外的处理,使用这个类对用户是透明的:
$obj1 = new Myclass('A'); //将调用 method1
$obj2 = new Myclass('B','C'); //将调用 method2
?> 以上代码中,通过在构造函数中使用 func_num_args() 函数取到参数的个数,自动执行 method1 或 method2 方法。我们可以结合函数 func_get_arg(i) 和 func_get_args() 对以上示例进行改进。 2,在 PHP5 中使用重载 先看以下示例: <div class="codetitle"><a style="CURSOR: pointer" data="34788" class="copybut" id="copybut34788" onclick="doCopy('code34788')"> 代码如下: