PHP中new self与new static有何具体区别及适用场景?

更新于
2026-07-26 19:52:29
14阅读来源:SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计321个文字,预计阅读时间需要2分钟。

下面是对给定代码的简化

phpclass Father { public static function getSelf() { return new self(); } public static function getStatic() { return new static(); }}

class Son extends Father {}

echo get_class(Son::getSelf());

结果:Son

下面我们举个栗子:

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。

阅读全文

本文共计321个文字,预计阅读时间需要2分钟。

下面是对给定代码的简化

phpclass Father { public static function getSelf() { return new self(); } public static function getStatic() { return new static(); }}

class Son extends Father {}

echo get_class(Son::getSelf());

结果:Son

下面我们举个栗子:

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。

阅读全文