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 相关文章推荐
echo, print, printf 和 sprintf 区别
Dec 06 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
Sep 09 PHP
php检查字符串中是否包含7位GSM字符的方法
Mar 17 PHP
PHP使用正则表达式获取微博中的话题和对象名
Jul 18 PHP
php生成验证码,缩略图及水印图的类分享
Apr 07 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
Apr 10 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
Jun 10 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
Sep 01 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
Jun 14 PHP
php写入txt乱码的解决方法
Sep 17 PHP
thinkphp5 模型实例化获得数据对象的教程
Oct 18 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
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
2009/06/08 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
2014/07/08 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
2017/01/17 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
在JavaScript中通过URL传递汉字的方法
2007/04/09 Javascript
jquery 圆形旋转图片滚动切换效果
2011/01/19 Javascript
jQuery.extend 函数详解
2012/02/03 Javascript
什么是DOM(Document Object Model)文档对象模型
2012/03/05 Javascript
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
我的Node.js学习之路(一)
2014/07/06 Javascript
JS上传图片前实现图片预览效果的方法
2015/03/02 Javascript
JavaScript排序算法动画演示效果的实现方法
2016/10/18 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
解决vue页面刷新或者后退参数丢失的问题
2018/03/13 Javascript
vue 修改 data 数据问题并实时显示操作
2020/09/07 Javascript
[01:32]dota2拉比克至宝(222)
2018/12/20 DOTA
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
一看就懂得Python的math模块
2018/10/21 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
2019/04/12 Python
python3.6环境安装+pip环境配置教程图文详解
2019/06/20 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
英国最大的电子零件及配件零售商:Partmaster
2017/04/24 全球购物
英国文具、办公用品和科技商店:Ryman
2018/09/27 全球购物
社区党务公开实施方案
2014/03/18 职场文书
公司年会搞笑主持词
2014/03/24 职场文书
中秋手机店促销方案
2014/06/16 职场文书
公司党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
股东出资证明书范例
2014/10/04 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
2014年物业公司工作总结
2014/11/22 职场文书
追讨欠款律师函
2015/06/24 职场文书
详解非极大值抑制算法之Python实现
2021/06/28 Python
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android