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自动更新新闻DIY
Oct 09 PHP
php discuz 主题表和回帖表的设计
Mar 13 PHP
php excel类 phpExcel使用方法介绍
Aug 21 PHP
php统计文件大小,以GB、MB、KB、B输出
May 29 PHP
php使用cookie实现记住用户名和密码实现代码
Apr 27 PHP
PHP中substr函数字符串截取用法分析
Jan 07 PHP
PHP的Yii框架中过滤器相关的使用总结
Mar 29 PHP
centos 7.2下搭建LNMP环境教程
Nov 20 PHP
php实现文件预览功能
May 23 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
May 11 PHP
Smarty模板变量与调节器实例详解
Jul 20 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 14 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初学者的8点有效建议
2010/11/20 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
自制PHP框架之设计模式
2017/05/07 PHP
详解php命令注入攻击
2019/04/06 PHP
jQuery Validate 验证,校验规则写在控件中的具体实例
2014/02/27 Javascript
三种动态加载js的jquery实例代码另附去除js方法
2014/04/30 Javascript
JavaScript中的比较操作符>、=、
2014/12/31 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
2015/03/03 Javascript
jQuery基于图层模仿五星星评价功能的方法
2015/05/07 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
JavaScript中for循环的几种写法与效率总结
2017/02/03 Javascript
Vuex实现计数器以及列表展示效果
2018/03/10 Javascript
Vue表单demo v-model双向绑定问题
2018/06/29 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
Vuex实现数据共享的方法
2019/12/20 Javascript
Python使用Supervisor来管理进程的方法
2015/05/28 Python
Python中selenium实现文件上传所有方法整理总结
2017/04/01 Python
教你一步步利用python实现贪吃蛇游戏
2019/06/27 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
Pycharm 2019 破解激活方法图文详解
2019/10/11 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
2019/11/07 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
2020/02/07 Python
pycharm如何实现跨目录调用文件
2020/02/28 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
介绍一下Java的安全机制
2012/06/28 面试题
最新奶茶店创业计划书
2014/01/25 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
2015小学五年级班主任工作总结
2015/05/21 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
详解Python生成器和基于生成器的协程
2021/06/03 Python
Android实现获取短信验证码并自动填充
2023/05/21 Java/Android