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网站基础优化方法小结
Sep 29 PHP
php 字符转义 注意事项
May 27 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
Jun 18 PHP
Drupal7连接多个数据库及常见问题解决
Mar 02 PHP
Thinkphp中Create方法深入探究
Jun 16 PHP
ThinkPHP的I方法使用详解
Jun 18 PHP
四个PHP非常实用的功能
Sep 29 PHP
Laravel最佳分割路由文件(routes.php)的方式
Aug 04 PHP
php与python实现的线程池多线程爬虫功能示例
Oct 12 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
Feb 07 PHP
php获取微信共享收货地址的方法
Dec 21 PHP
thinkPHP事务操作简单案例分析
Oct 17 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
乱谈我对耳机、音箱的感受
2021/03/02 无线电
PHP框架Laravel的小技巧两则
2015/02/10 PHP
PHP生成条形码大揭秘
2015/09/24 PHP
Thinkphp5+uploadify实现的文件上传功能示例
2018/05/26 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
增强的 JavaScript 的 trim 函数的代码
2007/08/13 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
2014/10/08 Javascript
JavaScript实现页面5秒后自动跳转的方法
2015/04/16 Javascript
JS+CSS实现自动切换的网页滑动门菜单效果代码
2015/09/14 Javascript
Javascript编程之继承实例汇总
2015/11/28 Javascript
用js实现博客打赏功能
2016/10/24 Javascript
详解vue.js数据传递以及数据分发slot
2018/01/20 Javascript
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
2019/05/23 Javascript
JavaScript数组去重实现方法小结
2020/01/17 Javascript
React中获取数据的3种方法及优缺点
2020/02/18 Javascript
vue 自定义组件的写法与用法详解
2020/03/04 Javascript
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
[00:34]TI7不朽珍藏III——纯金地穴编织者饰品展示
2017/07/15 DOTA
Python import用法以及与from...import的区别
2015/05/28 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
解决python升级引起的pip执行错误的问题
2018/06/12 Python
Python中修改字符串的四种方法
2018/11/02 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
2019/11/19 Python
Python3.7黑帽编程之病毒篇(基础篇)
2020/02/04 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
CSS 说明横向进度条最后显示文字的实现代码
2020/11/10 HTML / CSS
New Balance加拿大官方网站:运动鞋和健身服装
2018/11/19 全球购物
《蜗牛》教学反思
2014/02/18 职场文书
观看《永远的雷锋》心得体会
2014/03/12 职场文书
单位综合评价意见
2015/06/05 职场文书
幼儿园教师管理制度
2015/08/05 职场文书
导游词书写之黄山
2019/08/06 职场文书