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. RabbitMQ的六种工作模式

    一.基于erlang语言: 是一种支持高并发的语言 RabbitMQ的六种工作模式: 1.1 simple简单模式 消息产生着§将消息放入队列 消息的消费者(consumer) 监听(while) 消 ...

  2. wxWidgets 在 Linux 下开发环境配置

    本文基于 CodeBlocks (16.0.1) 和 wxWidgets (3.0.2) 搭建 Linux 下 GUI 开发环境. 1. 安装 CodeBlocks Ubuntu 默认的源当前 Cod ...

  3. TypeError: Buffer.alloc is not a function

    错误信息:TypeError: Buffer.alloc is not a function 截图如下: 解决办法(依次从上往下执行): sudo npm cache clean -f sudo np ...

  4. Luogu2860 [USACO06JAN]冗余路径Redundant Paths

    Luogu2860 [USACO06JAN]冗余路径Redundant Paths 给定一个连通无向图,求至少加多少条边才能使得原图变为边双连通分量 \(1\leq n\leq5000,\ n-1\l ...

  5. spingMVC异步上传文件

    框架是个强大的东西,一般你能想到的,框架都会帮你做了,然后只需要会用就行了,spingmvc中有处理异步请求的机制,而且跟一般处理请求的方法差别不大,只是多了一个注解:spingmvc也可以将stri ...

  6. xxtea---单片机数据加密算法

    转:https://www.cnblogs.com/LittleTiger/p/4384741.html 各位大侠在做数据传输时,有没有考虑过把数据加密起来进行传输,若在串口或者无线中把所要传的数据加 ...

  7. Signalr实现消息推送

    一.前言 大多数系统里面好像都有获取消息的功能,但这些消息来源都不是实时的,比如你开两个浏览器,用两个不同的账号登录,用一个账号给另外一个账号发送消息,然而并不会实时收到消息,必须要自己手动F5刷新一 ...

  8. nrf2401 - 最廉价的2.4G无线通信方案

    所有的使用Arduino 的朋友大多都会知道大名鼎鼎的XBee 这个土豪级的ZigBee 的通信模块.我们是做产品开发的,对于XBee这个产品可谓是又爱又恨,不得不承认他确实是一个好货,从做工到功能都 ...

  9. H5 58-网页的布局方式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. [2018福大至诚软工助教]UML设计小结

    [2018福大至诚软工助教]UML设计小结 一.得分 总分(50分) 团队信息 (4分) 队名 (1分) 团队成员的学号与姓名(需要标注队长)(1分) 本次作业的博客链接(1分) 三者完全,4分 团队 ...