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与javascript对多项选择的处理
Oct 09 PHP
php下mysql数据库操作类(改自discuz)
Jul 03 PHP
php笔记之常用文件操作
Oct 12 PHP
PHP数组相关函数汇总
Mar 24 PHP
PHP结合jQuery实现找回密码
Jul 22 PHP
PHP图像识别技术原理与实现
Oct 27 PHP
浅析php中array_map和array_walk的使用对比
Nov 20 PHP
CodeIgniter框架基本增删改查操作示例
Mar 23 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
Dec 13 PHP
PHP 自动加载类原理与用法实例分析
Apr 14 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
Sep 25 PHP
php远程请求CURL案例(爬虫、保存登录状态)
Apr 01 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下网站防IP攻击代码,超级实用
2010/10/24 PHP
比较详细PHP生成静态页面教程
2012/01/10 PHP
关于IIS php调用com组件的权限问题
2012/01/11 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
2019/10/08 PHP
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
兼容IE和FF的js脚本代码小结(比较常用)
2010/12/06 Javascript
异步加载script的代码
2011/01/12 Javascript
myEvent.js javascript跨浏览器事件框架
2011/10/24 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
Node.js插件的正确编写方式
2014/08/03 Javascript
node.js中的querystring.stringify方法使用说明
2014/12/10 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
2015/08/31 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
2016/04/26 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
2016/06/21 Javascript
浅谈jQuery中的checkbox问题
2016/08/10 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
2017/07/05 Javascript
vue 组件中使用 transition 和 transition-group实现过渡动画
2019/07/09 Javascript
Vue使用NProgress进度条的方法
2019/09/21 Javascript
用Python制作检测Linux运行信息的工具的教程
2015/04/01 Python
在Django中进行用户注册和邮箱验证的方法
2016/05/09 Python
django连接mysql配置方法总结(推荐)
2018/08/18 Python
python实现简单五子棋游戏
2019/06/18 Python
pywinauto自动化操作记事本
2019/08/26 Python
用python3读取python2的pickle数据方式
2019/12/25 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
解决python运行启动报错问题
2020/06/01 Python
django中ImageField的使用详解
2020/12/21 Python
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
博士生专家推荐信
2014/09/26 职场文书
劳动纠纷调解协议书格式
2014/11/30 职场文书
高老头读书笔记
2015/06/30 职场文书
2016孝老爱亲模范事迹材料
2016/02/26 职场文书
vue3获取当前路由地址
2022/02/18 Vue.js
【海涛DOTA解说】EVE女子战队独家录像加ZSMJ神牛两连发
2022/04/01 DOTA