PHP Static延迟静态绑定用法分析


Posted in PHP onMarch 16, 2016

本文实例讲述了PHP Static延迟静态绑定用法。分享给大家供大家参考,具体如下:

PHP5.3以后引入了延迟静态绑定static,它是为了解决什么问题呢?php的继承模型中有一个存在已久的问题,那就是在父类中引用扩展类的最终状态比较困难。来看一个例子。

class A 
{ 
  public static function echoClass(){ 
    echo __CLASS__; 
  }
  public static function test(){ 
    self::echoClass();    
  }
}
class B extends A 
{    
  public static function echoClass() 
  { 
     echo __CLASS__; 
  } 
} 
B::test(); //输出A

在PHP5.3中加入了一个新特性:延迟静态绑定,就是把本来在定义阶段固定下来的表达式或变量,改在执行阶段才决定,比如当一个子类继承了父类的静态表达式的时候,它的值并不能被改变,有时不希望看到这种情况。

下面的例子解决了上面提出的问题:

class A 
{ 
  public static function echoClass(){ 
    echo __CLASS__; 
  } 
  public static function test() 
  { 
    static::echoClass();    
  } 
} 
class B extends A 
{    
  public static function echoClass(){ 
     echo __CLASS__; 
  } 
} 
B::test(); //输出B

第8行的static::echoClass();定义了一个静态延迟绑定方法,直到B调用test的时候才执行原本定义的时候执行的方法。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP简介
Oct 09 PHP
html中select语句读取mysql表中内容
Oct 09 PHP
Linux fgetcsv取得的数组元素为空字符串的解决方法
Nov 25 PHP
PHP获取文件后缀名的三个函数
Oct 15 PHP
微信营销平台系统?刮刮乐的开发
Jun 10 PHP
php脚本运行时的超时机制详解
Feb 17 PHP
全面解读PHP的Yii框架中的日志功能
Mar 17 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
Aug 31 PHP
Yii2.0建立公共方法简单示例
Jan 29 PHP
php ajax confirm 删除实例详解
Mar 06 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
Aug 05 PHP
PHP5.5迭代生成器用法实例详解
Mar 16 #PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
Mar 16 #PHP
PHP 中提示undefined index如何解决(多种方法)
Mar 16 #PHP
Laravel中Trait的用法实例详解
Mar 16 #PHP
Laravel中注册Facades的步骤详解
Mar 16 #PHP
PHP与Ajax相结合实现登录验证小Demo
Mar 16 #PHP
Laravel实现构造函数自动依赖注入的方法
Mar 16 #PHP
You might like
php代码优化及php相关问题总结
2006/10/09 PHP
删除及到期域名的查看(抢域名必备哦)
2008/05/14 PHP
PHP 将图片按创建时间进行分类存储的实现代码
2010/01/05 PHP
PHP实现抓取HTTPS内容
2014/12/01 PHP
Prototype String对象 学习
2009/07/19 Javascript
jqeury eval将字符串转换json的方法
2011/01/20 Javascript
jquery attr 设定src中含有&(宏)符号问题的解决方法
2011/07/26 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
2014/01/09 Javascript
js跳转页面方法总结
2014/01/29 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
Three.js基础学习教程
2017/11/16 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
2018/10/18 Javascript
JavaScript常见继承模式实例小结
2019/01/11 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
js字符串类型String常用操作实例总结
2019/07/05 Javascript
[02:54]DOTA2亚洲邀请赛 VG战队出场宣传片
2015/02/07 DOTA
python中的reduce内建函数使用方法指南
2014/08/31 Python
在Python的Django框架下使用django-tagging的教程
2015/05/30 Python
Python中存取文件的4种不同操作
2018/07/02 Python
python字典值排序并取出前n个key值的方法
2018/10/17 Python
python 返回一个列表中第二大的数方法
2019/07/09 Python
python中web框架的自定义创建
2019/09/08 Python
Python中Yield的基本用法
2020/10/18 Python
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
为什么Runtime.exec(“ls”)没有任何输出?
2014/10/03 面试题
快餐店的创业计划书范文
2014/01/29 职场文书
2014学校庆三八妇女节活动总结
2014/03/01 职场文书
企业节能减排实施方案
2014/03/19 职场文书
基层党员公开承诺书
2014/05/29 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
关于环保的宣传稿
2015/07/23 职场文书
2016年校长新年寄语
2015/08/17 职场文书
php字符串倒叙
2021/04/01 PHP
使用python生成大量数据写入es数据库并查询操作(2)
2022/09/23 Python