码迷,mamicode.com
首页 > Web开发 > 详细

php new self()

时间:2018-10-06 16:40:33      阅读:2321      评论:0      收藏:0      [点我收藏+]

标签:没有   span   现在   决定   说话   struct   获取   自己   作用   

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()

标签:没有   span   现在   决定   说话   struct   获取   自己   作用   

原文地址:https://www.cnblogs.com/qq254980080/p/9747410.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!