1

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

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

谢谢!

4

4 回答 4

7

你有两个问题:

  1. 静态函数不能再在 php 中抽象了。
  2. 如前所述,后期静态绑定:由于方法 getName() 是在子类中定义的,因此您需要使用 static::getName() 而不是 self::getName() 来访问它
于 2013-01-06T03:01:18.677 回答
6

如果您能提示您如何“不成功”,那就太好了,但我想您遇到了静态绑定,需要使用PHP 5.3 中引入的后期静态绑定。

于 2010-12-06T06:59:17.430 回答
1

那不会成功——你不能有一个抽象的静态函数。查看已接受的答案为什么 PHP 5.2+ 不允许抽象静态类方法?有关原因的详细信息。

于 2011-08-06T03:54:54.270 回答
1

我的猜测是您可能正在尝试从该类实例化一个对象。

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

于 2010-12-06T06:59:35.337 回答