php面向对象编程self和static的区别

 更新时间:2016年05月08日 17:37:10   投稿:hebedich  
这篇文章主要介绍了PHP中static关键字以及与self关键字的区别,本文讲解了static关键字的定义、迟绑定(Late Static Bindings)、以及与self关键字的区别等内容,需要的朋友可以参考下

在php的面向对象编程中,总会遇到

class test{
 public static function test(){
  self::func();

  static::func();
 }

 public static function func(){}
}

可你知道self和static的区别么?

其实区别很简单,只需要写几个demo就能懂:

Demo for self:

class Car
{
 public static function model(){
  self::getModel();
 }

 protected static function getModel(){
  echo "This is a car model";
 }
}

Car::model();

Class Taxi extends Car
{
 protected static function getModel(){
  echo "This is a Taxi model";
 }
}

Taxi::model();
得到输出

This is a car model
This is a car model

可以发现,self在子类中还是会调用父类的方法

Demo for static

class Car
{
 public static function model(){
  static::getModel();
 }

 protected static function getModel(){
  echo "This is a car model";
 }
}

Car::model();

Class Taxi extends Car
{
 protected static function getModel(){
  echo "This is a Taxi model";
 }
}

Taxi::model();

得到输出

This is a car model
This is a Taxi model

可以看到,在调用static,子类哪怕调用的是父类的方法,但是父类方法中调用的方法还会是子类的方法(好绕嘴。。)

在PHP5.3版本以前,static和self还是有一点区别,具体是什么,毕竟都是7版本的天下了。就不去了解了。

总结呢就是:self只能引用当前类中的方法,而static关键字允许函数能够在运行时动态绑定类中的方法。

相关文章

  • php7 参数、整形及字符串处理机制修改实例分析

    php7 参数、整形及字符串处理机制修改实例分析

    这篇文章主要介绍了php7 参数、整形及字符串处理机制修改,结合实例形式分析了php7 参数、整形及字符串处理机制较旧版本的区别及相关操作注意事项,需要的朋友可以参考下
    2020-05-05
  • PHP信号处理机制的操作代码讲解

    PHP信号处理机制的操作代码讲解

    在本篇文章里小编给大家分享了关于PHP信号处理机制的操作的相关知识点内容,需要的朋友们学习下。
    2019-04-04
  • PHP创建word文档的方法(平台无关)

    PHP创建word文档的方法(平台无关)

    这篇文章主要介绍了PHP创建word文档的方法,结合实例形式分析了与平台无关的生成word文档的方法,非常简单实用,需要的朋友可以参考下
    2016-03-03
  • php把大写命名转换成下划线分割命名

    php把大写命名转换成下划线分割命名

    这篇文章主要介绍了php把大写命名转换成下划线分割命名,本文讲解对一些不习惯大写风格的命名方法如帕斯卡命名、驼峰命名法进行转换的方法,需要的朋友可以参考下
    2015-04-04
  • PHP解决短信验证码轰炸的方法详解

    PHP解决短信验证码轰炸的方法详解

    这篇文章主要为大家详细介绍了如何利用PHP解决短信验证码轰炸的问题,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以学习一下
    2023-12-12
  • PHP实现的增强性mhash函数

    PHP实现的增强性mhash函数

    这篇文章主要介绍了PHP实现的增强性mhash函数,使用默认mhash函数时报错,找到了两个解决方法,需要的朋友可以参考下
    2015-05-05
  • php数组遍历类与用法示例

    php数组遍历类与用法示例

    这篇文章主要介绍了php数组遍历类与用法,结合实例形式分析了php基于面向对象的数组遍历、读取操作封装与使用技巧,需要的朋友可以参考下
    2019-05-05
  • 一文彻底搞懂php的后期静态绑定举例讲解

    一文彻底搞懂php的后期静态绑定举例讲解

    这篇文章主要来带大家彻底搞懂php的后期静态绑定的举例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • php实现处理输入转义字符的代码

    php实现处理输入转义字符的代码

    这篇文章主要介绍了php实现处理输入转义字符的代码,需要的朋友可以参考下
    2015-11-11
  • php防止网站被刷新的方法汇总

    php防止网站被刷新的方法汇总

    这篇文章主要介绍了php防止网站被刷新的方法,实例汇总了常见的PHP防刷新技巧及应用实例,具有不错的参考借鉴价值,需要的朋友可以参考下
    2014-12-12

最新评论