今天老大在公司 问了一下  new static  和 new self 的区别 公司十个程序 竟然没有一个回答上来 后面画面自补 。。。

本屌丝回家后 就百度了解了下 这二者区别 :

使用 self:: 或者 __CLASS__ 对当前类的静态引用,取决于定义当前方法所在的类:

使用 static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为“静态绑定”,因为它可以用于(但不限于)静态方法的调用。

静态绑定是PHP 5.3.0,增加的一个功能 用于在继承范围内引用静态调用的类

简单通俗的来说, self就是写在哪个类里面, 实际调用的就是这个类.所谓的后期静态绑定, static代表使用的这个类, 就是你在父类里写的static,

然后通过子类直接/间接用到了这个static, 这个static指的就是这个子类, 所以说static和$this很像, 但是static可以用于静态方法和属性等.

请看列子

<?php
class Person
{public static function name(){echo "xiaosan";}public static function callself(){self::name();}public static function callstatic(){static::name();}
}class Man extends Person
{public static function name(){echo "gaojin";}
}
Man::name();  // output: gaojin
Person::callself();  // output: xiaosan
Person::callstatic();  // output:xiaosan(子类调用 你懂的)
?>

小编继续学习中

转载于:https://www.cnblogs.com/wlgaojin/p/4684627.html

PHP 中 new static 和 new self 的区别相关推荐

  1. php static 和 global,php中global static和$GLOBALS使用与区别

    本文章来总结介绍关于php中global static和$GLOBALS使用与区别有需要了解他们三区别的朋友可参考参考. 1.global在整个页面起作用. 例1  代码如下 复制代码 global ...

  2. php new static,PHP中new static()与new self()的区别异同分析

    本文实例讲述了PHP中new static()与new self()的区别异同,相信对于大家学习PHP程序设计能够带来一定的帮助. 问题的起因是本地搭建一个站.发现用PHP 5.2 搭建不起来,站PH ...

  3. C/C++中inline/static inline/extern inline的区别及使用

    引入内联函数的目的是为了解决程序中函数调用的效率问题,也是用内联函数取代带参宏定义(函数传参比宏更加方便易用) inline关键字用来定义一个类的内联函数. 在类体中和类体外定义成员函数是有区别的:在 ...

  4. dim private public static_PHP中const,static,public,private,protected的区别

    const: 定义常量,一般定义后不可改变 static: 静态,类名可以访问 public: 表示全局,类内部外部子类都可以访问: private: 表示私有的,只有本类内部可以使用: protec ...

  5. 浅谈C/C++中的static和extern关键字

    一.C语言中的static关键字 在C语言中,static可以用来修饰局部变量,全局变量以及函数.在不同的情况下static的作用不尽相同. (1)修饰局部变量 一般情况下,对于局部变量是存放在栈区的 ...

  6. 面试季,Java中的static关键字解析

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面 ...

  7. c++语言static作用,详解c++中的 static 关键字及作用

    注:若没有特指是 静态成员时,默认都是普通成员: 1 类中的普通成员 类中的成员变量 和 成员函数 是分开存储的.其中, 1)每个对象都有独立的成员变量:成员变量可以存储在 栈空间.堆空间.全局数据区 ...

  8. Java中的static关键字详解

    ** Java中的static关键字详解 ** 在一个类中定义一个方法为static,即静态的,那就是说无需本类的对象就可以调用此方法.调用一个静态方法就是 "类名.方法名" ,静 ...

  9. C++中的static关键字的总结

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 1.面向过程设计中的st ...

最新文章

  1. svn: E215004: Authentication failed
  2. CVE-2016-0095提权漏洞学习笔记
  3. C和C++里的const常量、volatile修饰符的深层次说明
  4. Linux 常用命令笔记 (持续更新)
  5. Scrapy框架的学习(8.scrapy中settings.py里面配置说明以及怎样设置配置或者参数以及怎样使用)
  6. 外媒:为何说中国对美国科技行业的影响与日俱增
  7. linux samba服务器
  8. linux环境下远程访问ftp
  9. hdu-4080 Stammering Aliens 字符串hash 模板题
  10. vue通过数据驱动实现表格行的增加与删除
  11. Virtual Machine Manager 2012 R2利用服务模板部署SQL
  12. activiti Stream之list转map及问题解决
  13. NYOJ 93 汉诺塔(三) 【栈的简单应用】
  14. linux vi替换字符串
  15. JAVA架构师学习路线图(绝对详细)
  16. 浅学transcad(与表格链接以及创建矩阵OD并显示期望线)
  17. 驱动程序(13) 将Windriver编写的程序制成DLL供其他程序调用
  18. 多线程m3u8下载器 v1.0
  19. 杂记之关于视频、音频编/解码
  20. 201919102004张雪婷(第四次作业)

热门文章

  1. 当网站不允许上传ASP,CGI,CER等脚本文件时
  2. Node.js 功能函数
  3. 计算机网络学习笔记(25. Cookie技术)
  4. 【零基础学Java】—final关键字与四种用法(二十九)
  5. 【Vue2.0】—过渡与动画(二十一)
  6. You may use special comments to disable some warnings. Use // eslint-disable-next-line……
  7. ES6学习(二)—变量的解构赋值
  8. 用PS为网迅安卓公司设计基于安卓平台的手机应用图标
  9. 浅谈Rem 及其转换原理
  10. 一个虚拟服务器装多个网站,一台虚拟主机 如何放多个网站