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中创建并处理图象
Oct 09 PHP
php木马攻击防御之道
Mar 24 PHP
QueryPath PHP 中的jQuery
Apr 11 PHP
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
Jun 11 PHP
在WINDOWS中设置计划任务执行PHP文件的方法
Dec 19 PHP
Zend Studio 实用快捷键一览表(精心整理)
Aug 10 PHP
php获取用户浏览器版本的方法
Jan 03 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
Aug 01 PHP
Yii2增加验证码步骤详解
Apr 25 PHP
php实现微信扫码自动登陆与注册功能
Sep 22 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
Nov 05 PHP
详解PHP序列化和反序列化原理
Jan 15 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入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
2016/09/11 PHP
IIS 7.5 asp Session超时时间设置方法
2017/04/17 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
TP3.2.3框架文件上传操作实例详解
2020/01/23 PHP
JS中剪贴板兼容性、判断复制成功或失败
2021/03/09 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
javascript里使用php代码实例
2014/12/13 Javascript
浅谈setTimeout 与 setInterval
2015/06/23 Javascript
浅谈JavaScript 的执行顺序
2015/08/07 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
2016/07/21 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
Vue学习笔记进阶篇之单元素过度
2017/07/19 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
2018/03/03 Javascript
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
2019/04/08 Javascript
微信小程序位置授权处理方法
2019/06/13 Javascript
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
[01:02:45]完美世界DOTA2联赛 LBZS vs Forest 第三场 11.07
2020/11/09 DOTA
python实现socket端口重定向示例
2014/02/10 Python
实例讲解Python中函数的调用与定义
2016/03/14 Python
Python操作csv文件实例详解
2017/07/31 Python
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
python检测IP地址变化并触发事件
2018/12/26 Python
python实现桌面气泡提示功能
2019/07/29 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
FC-Moto美国:欧洲最大的摩托车服装和头盔商店之一
2019/08/24 全球购物
爸爸的花儿落了教学反思
2014/02/20 职场文书
2014各大专业毕业生自我评价
2014/09/17 职场文书
2014年政工师工作总结
2014/12/18 职场文书
2014年小班保育员工作总结
2014/12/23 职场文书
车队安全员岗位职责
2015/02/15 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
mysql主从复制的实现步骤
2021/10/24 MySQL
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL
mysql数据库如何转移到oracle
2022/12/24 MySQL