php静态函数继承

时间:2013-08-23 10:51:05

标签: php inheritance static

我想定义一个带有静态函数的基类和一个调用其父类的静态方法的扩展类。作为示例,使用静态方法cArray的数组Length($arr)的基类,所以静态方法调用

cArray::Length($myArray);

然后我想写一个扩展类xArray并按如下方式使用它:

$objArr = new xArray($arr);
$objArr->Length();

我的问题是这是否可能。我尝试了很多代码但是由于不同的原因都失败了。

2 个答案:

答案 0 :(得分:0)

您应该能够静态调用该方法。它将自动调用父类中的方法,除非您在子类中重新定义了相同的方法。

xArray::Length($arr);

答案 1 :(得分:0)

将其放入代码:

class cArray {

    public static function Length($myArray) { ... }

}

class xArray extends cArray {

    ...

    public function Length() {
        parent::Length($this->arr);
    }

}

虽然PHP会让你这样做,但这是一个糟糕的主意。扩展类时,不应从根本上更改方法签名。在这里,您将覆盖静态方法cArray::Length,该方法使用非静态xArray::Length的一个参数,该参数不带参数。这是一个根本不同的功能,因而是一个糟糕的阶级结构。如果您启用严格错误,PHP会指出这一点。

您需要重新考虑您的方法。这个方法在基类中没有理由需要是静态的,没有理由需要在扩展类中更改它的签名。