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 相关文章推荐
JAVA/JSP学习系列之七
Oct 09 PHP
php列出一个目录下的所有文件的代码
Oct 09 PHP
php格式化日期和时间格式化示例分享
Feb 24 PHP
PHP整数取余返回负数的相关解决方法
May 15 PHP
php实现图片文件与下载文件防盗链的方法
Nov 03 PHP
PHP中遇到的时区问题解决方法
Jul 23 PHP
PHP文件操作实例总结
Sep 27 PHP
YII2自动登录Cookie总是失效的解决方法
Jun 28 PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
Nov 03 PHP
PHP实现生成模糊图片的方法示例
Dec 21 PHP
PHP创建自己的Composer包方法
Apr 09 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
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
node.js中的socket.io的广播消息
2014/12/15 Javascript
jQuery简单实现禁用右键菜单
2015/03/10 Javascript
JavaScript获取数组最小值和最大值的方法
2015/06/09 Javascript
分享Javascript实用方法二
2015/12/13 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
js实现定时进度条完成后切换图片
2017/01/04 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
bootstrap fileinput 上传插件的基础使用
2017/02/17 Javascript
jquery实现限制textarea输入字数的方法
2017/09/06 jQuery
基于js中style.width与offsetWidth的区别(详解)
2017/11/12 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
vue 项目接口管理的实现
2019/01/17 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
如何检测JavaScript中的死循环示例详解
2020/08/30 Javascript
[38:40]2018DOTA2亚洲邀请赛 4.6淘汰赛 mineski vs LGD 第一场
2018/04/10 DOTA
python中实现定制类的特殊方法总结
2014/09/28 Python
Python NumPy库安装使用笔记
2015/05/18 Python
使用pyecharts在jupyter notebook上绘图
2020/04/23 Python
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
2018/11/29 Python
python3使用pandas获取股票数据的方法
2018/12/22 Python
python 产生token及token验证的方法
2018/12/26 Python
Python获取网段内ping通IP的方法
2019/01/31 Python
python orm 框架中sqlalchemy用法实例详解
2020/02/02 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
python中线程和进程有何区别
2020/06/17 Python
Python读写锁实现实现代码解析
2020/11/28 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
Daniel Wellington官方海外旗舰店:丹尼尔惠灵顿DW手表
2018/02/22 全球购物
绝对经典成功的大学生推荐信
2013/11/08 职场文书
公司接待方案
2014/03/08 职场文书
基层党支部整改方案
2014/10/25 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
文明礼仪倡议书
2015/04/28 职场文书
联村联户简报
2015/07/21 职场文书
详解Oracle数据库中自带的所有表结构(sql代码)
2021/11/20 Oracle