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 的ArrayAccess接口 像数组一样来访问你的PHP对象
Oct 12 PHP
php 定界符格式引起的错误
May 24 PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
Mar 07 PHP
利用PHP实现图片等比例放大和缩小的方法详解
Jun 06 PHP
利用php下载xls文件(自己动手写的)
Apr 18 PHP
php获得网站访问统计信息类Compete API用法实例
Apr 02 PHP
php备份数据库类分享
Apr 14 PHP
php隐藏实际地址的文件下载方法
Apr 18 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
Mar 14 PHP
PHP导出带样式的Excel示例代码
Aug 28 PHP
thinkPHP5框架设置404、403等http状态页面的方法
Jun 05 PHP
php微信分享到朋友圈、QQ、朋友、微博
Feb 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
phpinfo 系统查看参数函数代码
2009/06/05 PHP
php设计模式  Command(命令模式)
2011/06/17 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
jquery弹出关闭遮罩层实例
2013/08/06 Javascript
js替代copy(示例代码)
2013/11/27 Javascript
jQuery菜单插件superfish使用指南
2015/04/21 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
JavaScript编写简单的计算器
2015/11/25 Javascript
深入分析javascript中console命令
2016/08/14 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
2016/09/23 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
2017/01/08 Javascript
使用Vue父子组件通信实现todolist的功能示例代码
2019/04/11 Javascript
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
vue中使用router全局守卫实现页面拦截的示例
2020/10/23 Javascript
vue中是怎样监听数组变化的
2020/10/24 Javascript
Python Collatz序列实现过程解析
2019/10/12 Python
Python实现将元组中的元素作为参数传入函数的操作
2020/06/05 Python
Python连接mysql方法及常用参数
2020/09/01 Python
html5组织文档结构_动力节点Java学院整理
2017/07/11 HTML / CSS
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
美国在线家装零售商:Build.com
2016/09/02 全球购物
Larsson & Jennings官网:现代瑞士钟表匠
2018/03/20 全球购物
科颜氏印度官网:Kiehl’s印度
2021/02/20 全球购物
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
班委竞选演讲稿
2014/04/28 职场文书
三严三实对照检查材料
2014/08/25 职场文书
公安领导班子四风问题个人整改措施思想汇报
2014/10/09 职场文书
2014年小学教导处工作总结
2014/12/19 职场文书
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL
修改MySQL的默认密码的四种小方法
2021/05/26 MySQL
CentOS7和8下安装Maven3.8.4
2022/04/07 Servers