php new self()

Posted 254980080

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php new self()相关的知识,希望对你有一定的参考价值。

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()是由调用者决定的

 












































以上是关于php new self()的主要内容,如果未能解决你的问题,请参考以下文章

php new self()和new static()

PHP中new static() 和 new self() 的区别

PHP 的 new static 和 new self

php new self()

对比 PHP 中 new static() 与 new self()

对比 PHP 中 new static() 与 new self()