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 相关文章推荐
ob_start(),ob_start('ob_gzhandler')使用
Dec 25 PHP
PHP5中的this,self和parent关键字详解教程
Mar 19 PHP
php判断字符以及字符串的包含方法属性
Aug 30 PHP
奉献出一个封装的curl函数 便于调用(抓数据专用)
Jul 22 PHP
php中3种方法删除字符串中间的空格
Mar 10 PHP
PHP实现数字补零功能的2个函数介绍
May 12 PHP
浅谈php和.net的区别
Sep 28 PHP
php定义一个参数带有默认值的函数实例分析
Mar 16 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
Sep 14 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
Mar 17 PHP
php中输出json对象的值(实现方法)
Mar 07 PHP
Yii2语言国际化自动配置详解
Aug 22 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
将数组写入txt文件 var_export
2009/04/21 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
2014/10/30 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
24条货真价实的PHP代码优化技巧
2016/07/28 PHP
Laravel 5.3 学习笔记之 错误&日志
2016/08/28 PHP
jquery js 获取时间差、时间格式具体代码
2013/06/05 Javascript
JS实现点击下载的小例子
2013/07/10 Javascript
减少访问DOM的次数提升javascript性能
2014/02/24 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
2014/03/19 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
jQuery中insertBefore()方法用法实例
2015/01/08 Javascript
js上传图片及预览功能实例分析
2015/04/24 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
2016/08/25 Javascript
使用JavaScript解决网页图片拉伸问题(推荐)
2016/11/25 Javascript
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
JavaScript迭代器的含义及用法
2019/06/21 Javascript
layui 选择列表,打勾,点击确定返回数据的例子
2019/09/02 Javascript
vue解决花括号数据绑定不成功的问题
2019/10/30 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
跟老齐学Python之总结参数的传递
2014/10/10 Python
在Mac OS上搭建Python的开发环境
2015/12/24 Python
pytorch 自定义卷积核进行卷积操作方式
2019/12/30 Python
Python 文件数据读写的具体实现
2020/01/24 Python
纪律教育学习心得体会
2014/09/02 职场文书
小区门卫的岗位职责
2014/09/26 职场文书
党的群众路线专项整治方案
2014/11/03 职场文书
2015年基建工作总结范文
2015/05/23 职场文书
实施意见格式范本
2015/06/05 职场文书
党员证明模板
2015/06/19 职场文书
2015年国庆节广播稿
2015/08/19 职场文书
七年级上册生物的课件
2019/08/07 职场文书