PHP:多态抽象静态方法

时间:2010-12-06 06:55:58

标签: php oop inheritance abstract static-polymorphism

我正在尝试做这样的事情,但我没有成功。

abstract class Animal 
{ 
    abstract static function getName();
    static function sayName() { echo self::getName(); }
}

谢谢!

4 个答案:

答案 0 :(得分:7)

你有两个问题:

  1. 静态函数不能再在php中显示了。
  2. 如前所述,后期静态绑定:因为方法getName()是在子类中定义的,所以需要使用static :: getName()而不是self :: getName()
  3. 来访问它

答案 1 :(得分:6)

如果您已经提示如何您“没有成功”,那会很不错,但我认为您遇到了静态绑定并且需要使用{{ 3}}在PHP 5.3中引入。

答案 2 :(得分:1)

我的猜测可能是你试图从该类中实例化一个对象。

不能。这是一个abstract类。对它进行子类化,然后实例化它。

答案 3 :(得分:1)

那不会成功 - 你不能拥有抽象的静态函数。有关原因的详细信息,请参阅接受的答案Why does PHP 5.2+ disallow abstract static class methods?