我想定义一个带有静态函数的基类和一个调用其父类的静态方法的扩展类。例如cArray
,具有静态方法的数组的基类Length($arr)
,因此静态方法调用
cArray::Length($myArray);
然后我想写一个扩展类xArray
并使用它如下:
$objArr = new xArray($arr);
$objArr->Length();
我的问题是这是否可能。我尝试了许多代码,但由于不同的原因都失败了。
我想定义一个带有静态函数的基类和一个调用其父类的静态方法的扩展类。例如cArray
,具有静态方法的数组的基类Length($arr)
,因此静态方法调用
cArray::Length($myArray);
然后我想写一个扩展类xArray
并使用它如下:
$objArr = new xArray($arr);
$objArr->Length();
我的问题是这是否可能。我尝试了许多代码,但由于不同的原因都失败了。
将其放入代码中:
class cArray {
public static function Length($myArray) { ... }
}
class xArray extends cArray {
...
public function Length() {
parent::Length($this->arr);
}
}
虽然 PHP 会让你这样做,但这是一个糟糕的主意。扩展类时,您不应该从根本上更改方法签名。在这里,您将cArray::Length
使用不带参数的非静态方法覆盖带有一个参数的静态方法xArray::Length
。这是一个根本不同的功能,因此是一个糟糕的类结构。如果您启用严格错误,PHP 会向您指出这一点。
你需要重新考虑你的方法。没有理由该方法需要在基类中是静态的,也没有理由需要在扩展类中更改其签名。
您应该能够静态调用该方法。它将自动调用父类中的方法,除非您在子类中重新定义了相同的方法。
xArray::Length($arr);