1

私はこのようなことをしようとしていますが、成功しません。

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

ありがとう!

4

4 に答える 4

7

2 つの問題があります。

  1. 静的関数は、PHP では抽象化できなくなりました。
  2. 前に述べたように、レイト スタティック バインディング: メソッド getName() は子クラスで定義されているため、self::getName() の代わりに static::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 に答える