我在PHP中遇到了OOP中的一个问题。我试图实现一个抽象的父类方法,并从子类,我必须使用它与可变数目的参数。PHP中带参数变量列表的抽象方法
这里是抛出的错误:
PHP Fatal error: Declaration of Square::getArea($length) must be compatible with Shape::getArea()
及其类别:
abstract class Shape {
abstract protected function getArea();
}
class Square extends Shape {
public function getArea($length)
{
return pow($length, 2);
}
}
class Triangle extends Shape {
public function getArea($base, $height)
{
return .5 * $base * $height;
}
}
我可以用孩子的__construct()
方法在开始时设置不同形状的属性,但我d想知道是否存在另一种方式,并允许我定义可变的参数列表。
在此先感谢。
'我可以在开始时使用孩子的__construct()方法设置不同形状的属性,这真的是最好的办法 –
但是你也可以在'getArea()'中使用'func_get_args()方法而不指定方法定义中的参数 –
我不喜欢'func_get_args()'。我觉得它很脏。我会保持构造方式,因为你说这是最好的方法。感谢您的评论@MarkBaker – JazZ