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

最新文章

  1. 详解python正则\b和\B的区别
  2. 蓝桥杯-矩阵乘法(java)
  3. Linux Apache 怎么修改工作模式
  4. 机器学习之PCA原理
  5. 电脑显示服务器负载信息失败,线上服务mcelog负载异常分析处理流程
  6. 笨办法学 Python · 续 练习 43:SQL 管理
  7. 前端压缩图片,前端压缩图片后转换为base64.
  8. Gnome 快捷键汇总
  9. 微信小程序调查报告(二)-账号注册篇
  10. phpcms上线步骤,无法生成缓存,页面空白原因
  11. 街头篮球服务器一直维护,《街头篮球》2.8新版本停服维护更新公告
  12. Win10+Linux双系统删除Linux
  13. OpenSSL安全特征问题漏洞(CVE-2022-2068)版本1.0.2k-fips升级到3.0.5
  14. python绘制五角星
  15. iOS动手做一个直播app开发(代码篇)
  16. ffmpeg 为取经而来_清华,那个穿越百年而来的白衣少年
  17. 不小心清空了回收站怎么恢复,回收站删除的东西可以恢复吗
  18. 计算机学科专业基础综合简称,2010年考研北京大学计算机学科专业基础综合(408)重难点解析...
  19. python中的matplotlib怎么改变标题大小和图例的字体大小和线的线型与颜色和输出图片大小呢?
  20. 贪心算法及Jump Game系列题详解

热门文章

  1. 《好了歌》--跛足道人
  2. 解决fixing(d:)stage 1问题
  3. 汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺
  4. java中的位移_JAVA中的位移运算
  5. 【国际化】应用开发小数点和逗号
  6. RuntimeWarning: Mean of empty slice.
  7. 图片铺满div元素不变形,超出部分隐藏,保留中心部分css代码
  8. 【工具】Moba连接的服务器如果记住密码后,更换了密码,无法再次登陆
  9. 模拟textarea输入框自动高度
  10. 密码锁电路设计及仿真