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&java(二)
Oct 09 PHP
PHP5+UTF8多文件上传类
Oct 17 PHP
PHP 文件缓存的性能测试
Apr 25 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
Apr 02 PHP
php页面跳转代码 输入网址跳转到你定义的页面
Mar 28 PHP
请离开include_once和require_once
Jul 18 PHP
使用YUI+Ant 实现JS CSS压缩
Sep 02 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
Mar 02 PHP
php字符串分割函数用法实例
Mar 17 PHP
PHP也能干大事 随机函数
Apr 14 PHP
PHP生成图片验证码功能示例
Jan 12 PHP
详解thinkphp的Auth类认证
May 28 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
一个数据采集类
2007/02/14 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
php实现数据库的增删改查
2017/02/26 PHP
PHP用户注册邮件激活账户的实现代码
2017/05/31 PHP
js中window.open()的所有参数详细解析
2014/01/09 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
基于casperjs和resemble.js实现一个像素对比服务详解
2018/01/10 Javascript
Angular学习教程之RouterLink花式跳转
2018/05/03 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
js实现购物车功能
2018/06/12 Javascript
JavaScript之实现一个简单的Vue示例
2019/01/17 Javascript
vue如何使用async、await实现同步请求
2019/12/09 Javascript
vue分页插件的使用方法
2019/12/25 Javascript
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
2020/02/01 Javascript
jquery+css3实现的经典弹出层效果示例
2020/05/16 jQuery
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
[02:21]DOTA2英雄基础教程 蝙蝠骑士
2013/12/16 DOTA
[02:48]DOTA2英雄基础教程 暗夜魔王
2013/12/12 DOTA
[04:03]辉夜杯主赛事 12月25日RECAP精彩回顾
2015/12/26 DOTA
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
[01:05:00]2018国际邀请赛 表演赛 Pain vs OpenAI
2018/08/24 DOTA
Python捕捉和模拟鼠标事件的方法
2015/06/03 Python
使用Python中的tkinter模块作图的方法
2017/02/07 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
2017/06/07 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
2020/03/17 Python
keras自动编码器实现系列之卷积自动编码器操作
2020/07/03 Python
陈欧的广告词
2014/03/18 职场文书
反腐倡廉标语
2014/06/24 职场文书
党员先进事迹材料
2014/12/19 职场文书
世界卫生日宣传活动总结
2015/02/09 职场文书
学校食堂管理制度
2015/08/04 职场文书
Python 如何安装Selenium
2021/05/06 Python
MySQL创建管理KEY分区
2022/04/13 MySQL