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 相关文章推荐
php5数字型字符串加解密代码
Apr 24 PHP
PHP游戏编程25个脚本代码
Feb 08 PHP
PHP操作MongoDB GridFS 存储文件的详解
Jun 20 PHP
解析php5配置使用pdo
Jul 03 PHP
PHP中$_FILES的使用方法及注意事项说明
Feb 14 PHP
php调用新浪短链接API的方法
Nov 08 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
Apr 03 PHP
php生成圆角图片的方法
Apr 07 PHP
jquery+php实现导出datatables插件数据到excel的方法
Jul 06 PHP
日常整理PHP中简单的图形处理(经典)
Oct 26 PHP
php实现图片上传、剪切功能
May 07 PHP
php中错误处理操作实例分析
Aug 23 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截取中文字符串不乱码的方法
2013/12/25 PHP
PHP操作路由器实现方法示例
2019/04/27 PHP
强制设为首页代码
2006/06/19 Javascript
用jquery设置按钮的disabled属性的实现代码
2010/11/28 Javascript
基于JQuery的多标签实现代码
2012/09/19 Javascript
jquery显示和隐藏div特效实例
2013/02/27 Javascript
javascript 获取图片尺寸及放大图片
2013/09/04 Javascript
影响jQuery使用的14个方面
2014/09/01 Javascript
Angularjs制作简单的路由功能demo
2015/04/14 Javascript
Bootstrap每天必学之轮播(Carousel)插件
2016/04/25 Javascript
Jquery删除css属性的简单方法
2016/12/04 Javascript
js阻止移动端页面滚动的两种方法
2017/01/25 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
2019/05/14 jQuery
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
2019/09/20 Javascript
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
Python 列表(List)操作方法详解
2014/03/11 Python
Python中的高级数据结构详解
2015/03/27 Python
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
详解Python中的静态方法与类成员方法
2017/02/28 Python
正确理解python中的关键字“with”与上下文管理器
2017/04/21 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
2019/06/19 Python
python程序变成软件的实操方法
2019/06/24 Python
python爬虫要用到的库总结
2020/07/28 Python
adidas泰国官网:adidas TH
2020/07/11 全球购物
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
什么是Oracle的后台进程background processes?都有哪些后台进程?
2012/04/26 面试题
致跳远运动员广播稿
2014/02/11 职场文书
人资专员岗位职责
2014/04/04 职场文书
2016年中学法制宣传日活动总结
2016/04/01 职场文书
关于感恩的素材句子(38句)
2019/11/11 职场文书
利用python调用摄像头的实例分析
2021/06/07 Python
Android基础入门之dataBinding的简单使用教程
2022/06/21 Java/Android