PHP后期静态绑定之self::限制实例分析


Posted in PHP onDecember 21, 2018

本文实例讲述了PHP后期静态绑定之self::限制。分享给大家供大家参考,具体如下:

在此我想讲一讲后期静态绑,我想讲self::static进行比较说明。

官方文档上是这样定义的:

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

在此我想用官方文档上的一个例子来说明self::限制:

self::实例

class A{
  public static function who(){
   echo __CLASS__;
  }
  public static function test(){
   self::who();
  }
}
class B extends A{
  public static function who(){
   echo __class__;
  }
}
$B=new B();
$B->test();`

输出结果为:

A

static实例:

class A{
  public static function who(){
    echo __class__;
  }
  public static function test(){
    static::who();
  }
}
class B extends A{
  public static function who(){
    echo __class__;
  }
}
$B=new B();
$B->test();

输出结果为:

B

注意,注意啦!这里用的是:static::,以前很少在PHP中见过这种写法吧?看到static::,不禁想起来:self:: parent::

在此我想把self:: static:: parent::进行一个比较:

  • self:: 通常指向类本身,也就是self是不指向任何已经实例化的对象,一般self使用来指向类中的静态变量(不可以指向非静态变量),但是可以访问类中其他静态方法与非静态方法。它是当前类的指针。
  • parent:: 是指向父类的指针,一般我们使用parent来调用父类的构造函数。但也可以访问父类的其他方法(不可以访问其他静态与非静态变量)。
  • static:: 通常用于后期静态绑定中。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP入门速成(2)
Oct 09 PHP
无数据库的详细域名查询程序PHP版(5)
Oct 09 PHP
PHP冒泡排序算法代码详细解读
Jul 17 PHP
php中通过curl检测页面是否被百度收录
Sep 27 PHP
PHP根据IP地址获取所在城市具体实现
Nov 27 PHP
Yii结合CKEditor实现图片上传功能
Jun 13 PHP
PHP实现的连贯操作、链式操作实例
Jul 08 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
Oct 13 PHP
CodeIgniter针对数据库的连接、配置及使用方法
Mar 03 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
Jun 22 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
浅谈PHP5.6 与 PHP7.0 区别
Oct 09 PHP
PHP类与对象后期静态绑定操作实例详解
Dec 20 #PHP
PHP设计模式之模板方法模式实例浅析
Dec 20 #PHP
PHP设计模式之模板模式定义与用法详解
Dec 20 #PHP
PHP面向对象程序设计之接口的继承定义与用法详解
Dec 20 #PHP
PHP面向对象程序设计之多态性的应用示例
Dec 19 #PHP
PHP自定义错误处理的方法分析
Dec 19 #PHP
PHP异常类及异常处理操作实例详解
Dec 19 #PHP
You might like
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
PDO::beginTransaction讲解
2019/01/27 PHP
jQuery 加上最后自己的验证
2009/11/04 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
2012/10/11 Javascript
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
JavaScript使用function定义对象并调用的方法
2015/03/23 Javascript
bootstrap3 兼容IE8浏览器!
2016/05/02 Javascript
Base64(二进制)图片编码解析及在各种浏览器的兼容性处理
2017/02/09 Javascript
JavaScript基础之流程控制语句的用法
2017/08/31 Javascript
layui中layer前端组件实现图片显示功能的方法分析
2017/10/13 Javascript
JavaScript中的一些隐式转换和总结(推荐)
2017/12/22 Javascript
vue2.0+koa2+mongodb实现注册登录
2018/04/10 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
2018/06/19 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
小程序日历控件使用方法详解
2018/12/29 Javascript
Vue.js实现tab切换效果
2019/07/24 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
2020/02/15 Javascript
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
python中日期和时间格式化输出的方法小结
2015/03/19 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
详解Python3 基本数据类型
2019/04/19 Python
对python3 Serial 串口助手的接收读取数据方法详解
2019/06/12 Python
使用Python制作新型冠状病毒实时疫情图
2020/01/28 Python
一篇文章搞懂python的转义字符及用法
2020/09/03 Python
浅谈css3中的前缀
2016/07/20 HTML / CSS
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
C#实现启动一个进程
2016/10/01 面试题
ktv好的活动方案
2014/08/15 职场文书
规范化管理年活动总结
2014/08/29 职场文书
群众路线个人自我剖析材料
2014/10/07 职场文书
2014年双拥工作总结
2014/11/21 职场文书
经理助理岗位职责
2015/02/02 职场文书
2016思想纪律作风整顿心得体会
2016/01/23 职场文书