PHP后期静态绑定之self::限制实例分析


Posted in PHP onDecember 21, 2018

本文实例讲述了PHP后期静态绑定之self::限制。分享给大家供大家参考,具体如下:

在此我想讲一讲后期静态绑,我想讲self::static进行比较说明。

官方文档上是这样定义的:

“后期绑定”的意思是说,static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为”静态绑定”,因为它可以用于(但不限于)静态方法的调用。

在此我想用官方文档上的一个例子来说明self::限制:

self::实例

class A{
  public static function who(){
   echo __CLASS__;
  }
  public static function test(){
   self::who();
  }
}
class B extends A{
  public static function who(){
   echo __class__;
  }
}
$B=new B();
$B->test();`

输出结果为:

A

static实例:

class A{
  public static function who(){
    echo __class__;
  }
  public static function test(){
    static::who();
  }
}
class B extends A{
  public static function who(){
    echo __class__;
  }
}
$B=new B();
$B->test();

输出结果为:

B

注意,注意啦!这里用的是:static::,以前很少在PHP中见过这种写法吧?看到static::,不禁想起来:self:: parent::

在此我想把self:: static:: parent::进行一个比较:

  • self:: 通常指向类本身,也就是self是不指向任何已经实例化的对象,一般self使用来指向类中的静态变量(不可以指向非静态变量),但是可以访问类中其他静态方法与非静态方法。它是当前类的指针。
  • parent:: 是指向父类的指针,一般我们使用parent来调用父类的构造函数。但也可以访问父类的其他方法(不可以访问其他静态与非静态变量)。
  • static:: 通常用于后期静态绑定中。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP安装攻略:常见问题解答(二)
Oct 09 PHP
一个PHP数组应该有多大的分析
Jul 30 PHP
php递归遍历删除文件的方法
Apr 17 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
May 12 PHP
PHP代码实现爬虫记录――超管用
Jul 31 PHP
zend framework中使用memcache的方法
Mar 04 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
Jun 12 PHP
Netbeans 8.2将支持PHP7 更精彩
Jun 13 PHP
php实现统计二进制中1的个数算法示例
Jan 23 PHP
PHP 实现手机端APP支付宝支付功能
Jun 07 PHP
实现PHP中session存储及删除变量
Oct 15 PHP
PHP convert_cyr_string()函数讲解
Feb 13 PHP
PHP类与对象后期静态绑定操作实例详解
Dec 20 #PHP
PHP设计模式之模板方法模式实例浅析
Dec 20 #PHP
PHP设计模式之模板模式定义与用法详解
Dec 20 #PHP
PHP面向对象程序设计之接口的继承定义与用法详解
Dec 20 #PHP
PHP面向对象程序设计之多态性的应用示例
Dec 19 #PHP
PHP自定义错误处理的方法分析
Dec 19 #PHP
PHP异常类及异常处理操作实例详解
Dec 19 #PHP
You might like
PHP HTML代码串 截取实现代码
2009/06/29 PHP
php获取网页请求状态程序示例
2014/06/17 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
PHP基于接口技术实现简单的多态应用完整实例
2017/04/26 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
2017/10/13 PHP
浅谈PHP封装CURL
2019/03/06 PHP
JQuery的一些小应用收集
2010/03/27 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
图解js图片轮播效果
2015/12/20 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
微信小程序新闻网站详情页实例代码
2020/01/10 Javascript
原生JS实现天气预报
2020/06/16 Javascript
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
Python备份Mysql脚本
2008/08/11 Python
python获取外网ip地址的方法总结
2015/07/02 Python
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
2015/07/27 Python
Python实现模拟分割大文件及多线程处理的方法
2017/10/10 Python
django中模板的html自动转意方法
2018/05/27 Python
基于pandas将类别属性转化为数值属性的方法
2018/07/25 Python
Python 正则表达式匹配字符串中的http链接方法
2018/12/25 Python
Python爬虫beautifulsoup4常用的解析方法总结
2019/02/25 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
2019/06/18 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
Keras使用tensorboard显示训练过程的实例
2020/02/15 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
python中常用的数据结构介绍
2021/01/12 Python
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
iostream与iostream.h的区别
2015/01/16 面试题
委托书样本
2014/04/02 职场文书
《菜园里》教学反思
2014/04/17 职场文书
党的群众路线教育实践活动党员个人整改措施
2014/10/27 职场文书
信访维稳工作汇报
2014/10/27 职场文书
党员反邪教心得体会
2016/01/15 职场文书
python和C/C++混合编程之使用ctypes调用 C/C++的dll
2022/04/29 Python