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调用三种数据库的方法(2)
Oct 09 PHP
php处理斐波那契数列非递归方法
Feb 04 PHP
用PHP来计算某个目录大小的方法
Apr 01 PHP
ThinkPHP基本的增删查改操作实例教程
Aug 22 PHP
php中常见的sql攻击正则表达式汇总
Nov 06 PHP
php生成shtml类用法实例
Dec 09 PHP
2017年最新PHP经典面试题目汇总(上篇)
Mar 17 PHP
php获取excel文件数据
Apr 21 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
Thinkphp 5.0实现微信企业付款到零钱
Sep 30 PHP
详解PHP实现支付宝小程序用户授权的工具类
Dec 25 PHP
laravel 框架结合关联查询 when()用法分析
Nov 22 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
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
Extjs4 GridPanel 的几种样式使用介绍
2013/04/18 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
2014/03/21 Javascript
jQuery中removeData()方法用法实例
2014/12/27 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
基于JS代码实现导航条弹出式悬浮菜单
2016/06/17 Javascript
JavaScript编写一个简易购物车功能
2016/09/17 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
Node.js之网络通讯模块实现浅析
2017/04/01 Javascript
解决npm安装Electron缓慢网络超时导致失败的问题
2018/02/06 Javascript
jQuery扩展方法实现Form表单与Json互相转换的实例代码
2018/09/05 jQuery
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
2018/12/06 NodeJs
基于Vue实现平滑过渡的拖拽排序功能
2019/06/12 Javascript
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
python中实现php的var_dump函数功能
2015/01/21 Python
Python深入06——python的内存管理详解
2016/12/07 Python
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
Python中logging日志库实例详解
2020/02/19 Python
Python3 assert断言实现原理解析
2020/03/02 Python
150行python代码实现贪吃蛇游戏
2020/04/24 Python
pytorch查看通道数 维数 尺寸大小方式
2020/05/26 Python
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
Otticanet澳大利亚:最顶尖的世界名牌眼镜, 能得到打折季的价格
2018/08/23 全球购物
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
什么是唯一索引
2015/07/05 面试题
linux面试题参考答案(7)
2012/10/29 面试题
生产副总岗位职责
2013/11/28 职场文书
政府领导干部个人对照检查材料思想汇报
2014/09/24 职场文书