【发布时间】:2010-12-06 06:55:57
【问题描述】:
我正在尝试做这样的事情,但我没有成功。
abstract class Animal
{
abstract static function getName();
static function sayName() { echo self::getName(); }
}
谢谢!
【问题讨论】:
标签: php oop inheritance abstract static-polymorphism
我正在尝试做这样的事情,但我没有成功。
abstract class Animal
{
abstract static function getName();
static function sayName() { echo self::getName(); }
}
谢谢!
【问题讨论】:
标签: php oop inheritance abstract static-polymorphism
你有两个问题:
【讨论】:
self::getName() 需要更改为 static::getName() 才能工作。 RFC:wiki.php.net/rfc/reclassify_e_strict#abstract_static_methods
如果你能给出一个关于如何你“不成功”的提示,那就太好了,但我想你在静态绑定上遇到了挫折,需要使用@987654321 @ 在 PHP 5.3 中引入。
【讨论】:
我的猜测是,您可能正在尝试从该类实例化一个对象。
你不能。这是一个abstract 类。子类化它,然后实例化它。
【讨论】:
这不会成功——你不能有一个抽象的静态函数。有关原因的详细信息,请参阅接受的答案 Why does PHP 5.2+ disallow abstract static class methods?。
【讨论】: