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初学者头疼问题总结
Jul 08 PHP
用PHP和ACCESS写聊天室(四)
Oct 09 PHP
PHP通用检测函数集合
Feb 08 PHP
php使用json_encode对变量json编码
Apr 07 PHP
ThinkPHP中Session用法详解
Nov 29 PHP
php+ajax实时输入自动搜索匹配的方法
Dec 26 PHP
ecshop 2.72如何修改后台访问地址
Mar 03 PHP
php实现文本数据导入SQL SERVER
May 17 PHP
Yii遍历行下每列数据的方法
Oct 17 PHP
php检测mysql表是否存在的方法小结
Jul 20 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
May 23 PHP
PHP 出现 http500 错误的解决方法
Mar 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
Extended CHM PHP 语法手册之 DIY
2006/10/09 PHP
PHP自动更新新闻DIY
2006/10/09 PHP
php 常用类汇总 推荐收藏
2010/05/13 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
JavaScript Chart 插件整理
2010/06/18 Javascript
关于js类的定义
2011/06/28 Javascript
基于jquery库的tab新形式使用
2012/11/16 Javascript
简单实例处理url特殊符号&处理(2种方法)
2013/04/02 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
基于jQuery实现左右图片轮播(原理通用)
2015/12/24 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
BootStrapValidator校验方式
2016/12/19 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
Vue函数式组件的应用实例详解
2019/08/30 Javascript
layui原生表单验证的实例
2019/09/09 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
2020/02/07 Javascript
python访问sqlserver示例
2014/02/10 Python
python素数筛选法浅析
2018/03/19 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
2018/07/09 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
法国在线药房:1001Pharmacies
2021/03/07 全球购物
电子商务专业毕业生工作推荐信
2013/11/17 职场文书
新三好学生主要事迹
2014/01/23 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
新教师个人工作总结
2015/02/06 职场文书
2015年物流客服工作总结
2015/07/27 职场文书
2016年优秀班主任先进事迹材料
2016/02/26 职场文书
2019年描写人生经典诗句大全
2019/07/08 职场文书
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android