【发布时间】:2012-11-27 07:01:10
【问题描述】:
我想将子类中的方法声明为静态或非静态取决于父类。 我正在使用 php,由于版本更改,我遇到了这个问题,有人可以帮忙吗? 这是一个示例,说明究竟发生了什么变化
//in earlier version
class parent{
function test(){
//some code here
}
}
class child extends parent{
function test(){
//some code here
}
}
//in new version
class parent{
static function test(){
//some code here
}
}
class child extends parent{
function test(){
//some code here
}
}
致命错误:无法在子类中使静态方法 parent::test() 成为非静态方法
我希望我的代码与这两个版本兼容。我应该怎么做?
【问题讨论】:
-
如果该类在父类中应该是静态的,而在子类中是非静态的,则表明方法不一样,因此您不应该在子类中重载它们而是编写一种新方法。
-
好吧,要么设为
static,要么不设为。不可能两者兼而有之。你是什么意思你想改变它“取决于父母”?这会动态变化吗? -
我想让新旧版本都兼容:(我可以在子类中进行更改,但不能在父类中进行更改
-
你能试着回答问题吗?为什么它必须与两者兼容?为什么你的类可能有两个不同的不兼容的父类?