PHP new self什么,php new self()是什么意思
php里new self() 一般在類內部使用,作用是對自身類實例化,搞不明白干嘛要弄這么個方法,弄個實例加深下大家對這個東東的理解
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 '
';
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 '
';
print get_class($er1->getfa2());
echo '
';
print get_class($er2->getfa1());
echo '
';
print get_class($er2->getfa2());
輸出:
fa
er1
fa
er2
現在輸出不一樣了,明白new self()與new static()的區別了,只有在繼承中才能體現出來,如果沒有任何繼承,那么這兩者是沒有區別的,在繼承中new self()返回的實例是自己所在的那個類,不管誰調用都是不變的,new static()是由調用者決定的
最新文章
- win10下安装PHP_CodeSniffer 检查编码规范
- 从Uboot到Linux技术
- 如何用ABAP代码的方式弹出SPRO里的customizing activity
- ci Call to undefined function site_url()
- c语言输出去掉最后一行回车,新人提问:如何将输出时每行最后一个空格删除...
- P2294 [HNOI2005]狡猾的商人
- 【bfs】WZK旅游(jzoj 1996)
- 送书|science-组合图表绘制
- 夏季晨练不得早于6点 - 生活至上,美容至尚!
- BAT运维系统Client设计探秘
- linux 必知命令
- windows系统: 解决ie谷歌浏览器证书错误.2021-05-27
- 第十三章 RememberMe——《跟我学Shiro》[张开涛]
- Linux如何测试USB硬盘的读写速度
- 写给产品经理的第4封信:关于产品经理的十万个为什么?你为什么要做产品经理?
- 三幅图弄懂EventBus核心原理
- Java JPG转TIF文件过大的解决方案(单张解决方案,多张可看以下参考链接)
- 2014 年放弃阿里巴巴offer 的人是否格外多?如果是,为什么?
- 深脑链打地基,人工智能建高楼:DBC和AI的不解之缘
- JavScript简介