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()是由调用者决定的
随机推荐
- Generative Adversarial Nets[LSGAN]
0 背景 在这之前大家在训练GAN的时候,使用的loss函数都是sigmoid_cross_entropy_loss函数,然而xudon mao等人发现当使用伪造样本去更新生成器(且此时伪造样本也被判 ...
- PHP之基本操作
PHP基础操作1.session操作 手动设置session生存期方式一: session_start(); // 设置生存时间 $lifeTime = 24*6000; setcookie(sess ...
- 生成ssh公钥
部分内容参考:http://git.mydoc.io/?t=154712 1.在电脑桌面上右键,选择git Base here 2.生成ssh公钥 ssh-keygen -t rsa -C" ...
- CAP理论与分布式事务解决方案
微服务系统所设计的系统是分布式系统.分布式系统有一个著名的CAP理论,即同时满足"一致性""可用性"和"分区容错"是一件不可能的事.CAP理 ...
- 讲一个关于paxos的故事...
先讲一个故事. 从前,在国王Leslie Lamport的统治下,有个黑暗的希腊城邦叫paxos.城邦里有3类人, 决策者 提议者 群众 虽然这是一个黑暗的城邦但是很民主,按照议会民主制的政治模式制订 ...
- 开源Dapper的Lambda扩展-Sikiro.Dapper.Extension V2.0
前言 去年我在业余时间,自己整了一套dapper的lambda表达式的封装,原本是作为了一个个人的娱乐项目,当时也只支持了Sql Server数据库.随之开源后,有不少朋友也对此做了试用,也对我这个项 ...
- TCP/IP 协议 OSI七层协议
------------------你来自何处并不重要,重要的是你要去往何方,人生最重要的不是所站的位置,而是所去的方向.人只要不失去方向,就永远不会失去自己! day 27 # # -------- ...
- NFV组播实验对照
一 论文题目:Approximation and Online Algorithms for NFV-Enabled Multicasting in SDNs 发表时间:2017 期刊来源:Inter ...
- 在网站开发时,可以设置防盗,不被复制和F12
禁止小功能 //禁止右键 document.oncontextmenu = function () { return false } //禁止f12 document.onkeydown = func ...
- CI框架在控制器中切换读写库和读写库
CodeIgniter框架版本:3.1.7 ,php版本:5.6.* ,mysql版本:5.6 在Ci框架中,可以在application/config/database.php中配置多个group, ...