以下にクリを与えてみましょう:
class Father { public static function getSelf() { return new self(); } public static function getStatic() { return new static(); } } class Son extends Father {} echo get_class(Son::getSelf()); // Father echo get_class(Son::getStatic()); // Son echo get_class(Father::getSelf()); // Father echo get_class(Father::getStatic()); // Father
new self
ここで、この行 get_class(Son::getStatic()); が Son.class, を返すことに注意してください。
self は、次の例のように、new self のキーワード new が存在するクラスを返します。
public static function getSelf() { return new self(); // new 关键字在 Father 这里 }
は常に Father を返します。
new static
static 上記に基づくと、少し賢くなっています。static は、get_class( を実行する Son など) new static() を実行するクラスを返します。 Son: :getStatic()) は Son、Father を返します。get_class(Father::getStatic()) を実行すると Father
が返されます。継承がない場合、新しい self と新しい static は同じものを返します。結果。
以上がPHP の新しい静的と新しい自己の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。