函数重载和覆盖(也叫重写)是PHP中的OOP(面向对象)特性。在函数重载中,多个函数可以具有相同的方法名但参数的数量或类型不同。但是在函数重写的情况下,多个函数将具有相同的方法名和参数数量。
- 函数重载: 函数重载包含相同的函数名称,该函数根据参数的数量和类型执行不同的任务。在PHP中,函数重载是在魔术方法__call()的帮助下完成的。此函数采用函数名称和参数。函数重载:
<?php
class shape{
function __call($name_function,$arguments){
if($name_function=='area'){
switch (count($arguments)){
//如果一个参数,,圆的面积
case 1:
return 3.14*$arguments[0];
//如果两个参数,矩形面积
case 2:
return $arguments[0]*$arguments[1];
}
}
}
}
$s=new shape;
echo $s->area(2)."<br>";
echo $s->area(2,6);
输出结果为:6.28 12
2. 函数重写:函数重写与其他OOP编程语言相同。在函数重写中,父类和子类应具有相同的函数名和参数数量。它用于替换子类中的父方法。覆盖的目的是更改父类方法的行为。具有相同名称和相同参数的两个方法称为覆盖。实例:
class P{
function demo(){
echo "Parent";
}
}
class C extends P{
function demo(){
echo "<br>Child";
}
}
$p=new P;
$c=new C;
$p->demo();
$c->demo();
输出结果为:Parent Child