php new self()是什么意思

    xiaoxiao2021-04-17  39

    php里new self() 一般在类内部使用,作用是对自身类实例化,搞不明白干嘛要弄这么个方法,弄个实例加深下大家对这个东东的理解

      <?php class test{     public function __construct(){         echo 'hello';     }     public function test2(){         new self();     } }   test::test2();

    这个实例会输出hello

    后边发现还有个new static()方法,那这个跟new self()有什么区别呢,看代码说话:

    class fa {     public function getfa1() {         return new self();     }     public function getfa2() {         return new static();     } } $f = new fa(); print get_class($f->getfa1()); echo '<p>'; print get_class($f->getfa2());

    get_class()方法是用于获取实例所属的类名

    输出:

    fa

    fa

    两个输出都一样,感觉没啥区别呀,后边突发奇想继承下再看看

    class er1 extends fa { } class er2 extends fa { } $er1 = new er1(); $er2 = new er2(); print get_class($er1->getfa1()); echo '<br>'; print get_class($er1->getfa2()); echo '<br>'; print get_class($er2->getfa1()); echo '<br>'; print get_class($er2->getfa2()); 输出:

    fa er1 fa er2

    现在输出不一样了,明白new self()与new static()的区别了,只有在继承中才能体现出来,如果没有任何继承,那么这两者是没有区别的,在继承中new self()返回的实例是自己所在的那个类,不管谁调用都是不变的,new static()是由调用者决定的

    转载请注明原文地址: https://ju.6miu.com/read-673670.html

    最新回复(0)