分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

【转】PHP中的后期静态绑定(Late Static Bindings )

发布时间:2023-09-06 02:11责任编辑:苏小强关键词:PHP

php5.3版本新增的静态绑定的静态绑定语法,也成为PHP的后期静态绑定,如下


class A{ ???public static function func1(){ ???????echo __CLASS__.PHP_EOL; ???} ???public static function test(){ ???????self::func1(); ???} }class B extend A{ ???public static function func1(){ ???????echo __CLASS__.PHP_EOL; ?//__CLASS__是当前类的名称 ???}}B::test();结果:A

但是,既然B继承了A,并重写了A的func1,那么如果想让test中执行的是B中的func1要怎么做呢?于是,php5.3使用了预留的static关键字,将上述代码中的test函数改成这样:

public static function test(){ ???????static::func1();} 

结果:B

也就是说:static::实现了后期静态绑定,static::对应的变量不再是当前类的变量,而是由最终运算时动态决定的(也可以说从堆里面提取出来的关键字)。

同时,在这个学习的过程中,我还发现另外一个用法:new static() 和 new self(), 同样的,new static 就是实例化最终继承的类,而new self就是实例化当前类, new parent就是实现当前类的父类了。

好了,顺便提一下形如这种格式的用法有三种: “self::”、”parent::”、”static::”;

【转】PHP中的后期静态绑定(Late Static Bindings )

原文地址:https://www.cnblogs.com/cfYu/p/9520689.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved