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 相关文章推荐
输出控制类
Oct 09 PHP
打造计数器DIY三步曲(下)
Oct 09 PHP
用php实现批量查询清除一句话后门的代码
Jan 20 PHP
JS 网站性能优化笔记
May 24 PHP
php tp验证表单与自动填充函数代码
Feb 22 PHP
基于PHP服务端图片生成缩略图的方法详解
Jun 20 PHP
PHP使用feof()函数读文件的方法
Nov 07 PHP
利用php_imagick实现复古效果的方法
Oct 18 PHP
PHP实现多关键字加亮功能
Oct 21 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 PHP
PHP PDOStatement::setFetchMode讲解
Feb 03 PHP
ThinkPHP3.1.2 使用cli命令行模式运行的方法
Apr 14 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
PHP中的生成XML文件的4种方法分享
2012/10/06 PHP
html静态页面调用php文件的方法
2014/11/13 PHP
基于jquery的表头固定的若干方法
2011/01/27 Javascript
谈谈关于JavaScript 中的 MVC 模式
2013/04/11 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
2015/02/24 Javascript
详解参数传递四种形式
2015/07/21 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
2015/12/31 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
2017/01/19 Javascript
JS实现常见的查找、排序、去重算法示例
2018/05/21 Javascript
jQuery实现参数自定义的文字跑马灯效果
2018/08/15 jQuery
解决webpack多页面内存溢出的方法示例
2019/10/08 Javascript
js实现圆形显示鼠标单击位置
2020/02/11 Javascript
JS实现电脑虚拟键盘的操作
2020/06/24 Javascript
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python中List.count()方法的使用教程
2015/05/20 Python
开始着手第一个Django项目
2015/07/15 Python
python实现员工管理系统
2018/01/11 Python
对pandas中Series的map函数详解
2018/07/25 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
vscode配置anaconda3的方法步骤
2020/08/08 Python
HTTP状态码详解
2021/03/18 杂记
华为python面试题
2016/05/03 面试题
我的理想演讲稿
2014/04/30 职场文书
2014组织生活会方案
2014/05/19 职场文书
十岁生日答谢词
2015/01/05 职场文书
四年级数学上册教学计划
2015/01/20 职场文书
写给媳妇的检讨书
2015/05/06 职场文书
企业法人任命书
2015/09/21 职场文书
个人业务学习心得体会
2016/01/25 职场文书
导游词之西湖雷峰塔
2019/09/18 职场文书
教你使用pyinstaller打包Python教程
2021/05/27 Python
在Python 中将类对象序列化为JSON
2022/04/06 Python