PHP 的 new static 和 new self 具体有什么?

  •  
  • 5个月前
  • 139 次阅读
  • 更新于 1小时前
php  

下面我们举个栗子:    

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` 会返回执行 `new static()` 的类,比如 `Son` 执行 `get_class(Son::getStatic())` 返回的是 `Son`, `Father` 执行`get_class(Father::getStatic())` 返回的是 `Father`

而在没有继承的情况下,可以认为 `new self` 和 `new static` 是返回相同的结果。
 


   本站文章除注明转载/出处外,均为本站原创或翻译。若要转载但请务必注明出处,尊重他人劳动成果。    本文链接: http://james.dmzfa.com/articles/php-de-new-static-he-new-self-ju-ti-you-shen-me

上一篇:【转】Laravel 响应:返回图片流

下一篇:laravel 中国镜像

文章评论 (1)发表评论

  • 昵       称:james
    评论内容:
    棒棒的

    2019-09-09 15:38:29  回复

Top