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()是由调用者决定的
随机推荐
- docker 12 docker容器数据卷
数据卷概念 ♣我们知道,当我们把一个运行中的容器关闭后,容器里的数据就没有了(如果你做了docker commit操作,数据会保留到新的镜像里面).所以我们就需要用容器数据卷把容器数据进行持久化储存. ...
- [MicroPython]TPYBoardv102播放音乐实例
0x00前言 前段时间看到TPYBoard的技术交流群(群号:157816561,)里有人问关于TPYBoard播放音乐的问题.最近抽空看了一下文档介绍,着手做了个实验.更多MicroPython的教 ...
- arm汇编之 bne与beq
在网上看了一些bne和beq的区别,但是对于初学者来说,容易越看越糊涂,因此简单介绍下: 我们先分析CPSR寄存器的Z标识位: cmp指令可以直接影响CPSR寄存器的Z标识位(条件位),从图中可以看出 ...
- AbstractQueuedSynchronizer
1 简介 AbstractQueuedSynchronizer简称AQS是一个抽象同步框架,可以用来实现一个依赖状态的同步器.JDK1.5中提供的java.util.concurrent包中的大多数的 ...
- 给大家推荐8个SpringBoot精选项目
前言 2017年,曾在自己的博客中写下这样一段话:有一种力量无人能抵挡,它永不言败生来倔强.有一种理想照亮了迷茫,在那写满荣耀的地方. 如今2018年已过大半,虽然没有大理想抱负,但是却有自己的小计划 ...
- NCC Meetup 2018 Shanghai 活动小结(含PPT与视频)
NCC Meetup 2018 上海的活动于2018年6月30日在微软上海港汇办公室进行.原本计划30人规模的小型活动,结果收到了逾60人的报名,其中大部均来到现场参加了活动. 本次活动得到了微软公司 ...
- Linux:一位猫奴的意外逆袭
作者:Vamei,严禁任何形式转载. 1991年年中,林纳斯·托瓦兹(Linus Torvalds)在自己房间里敲着键盘.他全神贯注地盯着14寸的黑色屏幕,都没感觉到自己的小猫Randi在扒自己的裤腿 ...
- 05 Docker集群/基础设施 - DevOps之路
05 Docker集群/基础设施 - DevOps之路 文章Github地址,欢迎start:https://github.com/li-keli/DevOps-WiKi Docker的集群目前主流的 ...
- Node+GitLab实现小程序CI系统
为什么要实现自动部署 小程序开发迭代里,有以下几个个头痛的问题, 如何准确并快速的的把小程序上传去后台,并让测试人员进行测试? 测试同事找开发要二维码,效率较低 本地生成的二维码会出现携带本地代码.未 ...
- 修改docker0默认IP地址
第一步:vim /etc/docker/daemon.json { "registry-mirrors": ["https://docker.mirrors.ustc.e ...