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站内搜索并高亮显示关键字的实现代码
Dec 29 PHP
header中Content-Disposition的作用与使用方法
Jun 13 PHP
PHP学习笔记之字符串编码的转换和判断
May 22 PHP
PHP定时更新程序设计思路分享
Jun 10 PHP
PHP缓存机制Output Control详解
Jul 14 PHP
php实现的九九乘法口诀表简洁版
Jul 28 PHP
PHP实现多图上传和单图上传功能
May 17 PHP
PHP yield关键字功能与用法分析
Jan 03 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
Jun 08 PHP
php实现的数组转xml案例分析
Sep 28 PHP
php回调函数处理数组操作示例
Apr 13 PHP
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
Mar 14 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&&mysql)一
2006/10/09 PHP
smarty section简介与用法分析
2008/10/03 PHP
php curl的深入解析
2013/06/02 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
2014/07/29 PHP
php cookie用户登录的详解及实例代码
2017/01/03 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
2020/11/23 PHP
javascript DOM编程实例(智播客学习)
2009/11/23 Javascript
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
SWFObject 2.1以上版本语法介绍
2010/07/10 Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
2014/03/05 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
Bootstrap table使用方法总结
2017/05/10 Javascript
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
浅谈Vuex的状态管理(全家桶)
2017/11/04 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
JavaScript中的"=、==、==="区别讲解
2019/01/22 Javascript
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
JS轮播图的实现方法
2020/08/24 Javascript
Python实现统计文本文件字数的方法
2017/05/05 Python
python日期与时间戳的各种转换示例
2020/02/12 Python
Python使用configparser库读取配置文件
2020/02/22 Python
基于python 等频分箱qcut问题的解决
2020/03/03 Python
python 实现任务管理清单案例
2020/04/25 Python
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
既然说Ruby中一切都是对象,那么Ruby中类也是对象吗
2013/01/26 面试题
《神奇的克隆》教学反思
2014/04/10 职场文书
法定代表人授权委托书范文
2014/08/02 职场文书
大学生创业计划书怎么写
2014/09/15 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
2014年妇女工作总结
2014/12/06 职场文书
2015毕业生简历自我评价
2015/03/02 职场文书
关于童年的读书笔记
2015/06/26 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
会计手工模拟做账心得体会
2016/01/22 职场文书
PostgreSQL存储过程实用脚本(二):创建函数入门
2021/04/05 PostgreSQL
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android