当前位置:首页 > PHP教程 > php函数 > 列表

PHP中static和self的区别

发布:smiling 来源: PHP粉丝网  添加日期:2022-06-06 08:24:40 浏览: 评论:0 

使用 self:: 或者 __CLASS__对当前类的静态引用,取决于定义当前方法所在的类:

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

静态绑定是PHP 5.3.0,增加的一个功能 用于在继承范围内引用静态调用的类

简单通俗的来说,

self就是写在哪个类里面, 实际调用的就是这个类.

static代表使用的这个类, 就是你在父类里写的static,然后被子类覆盖,使用的就是子类的方法或属性

  1. <?php 
  2.  
  3. class Person 
  4.  
  5. { 
  6.  
  7.     public static function name() 
  8.  
  9.     { 
  10.  
  11.         echo "111"; 
  12.  
  13.         echo "<br />"; 
  14.  
  15.     } 
  16.  
  17.     public static function callself() 
  18.  
  19.     { 
  20.  
  21.         self::name(); 
  22.  
  23.     } 
  24.  
  25.  
  26.  
  27.     public static function callstatic() 
  28.  
  29.     { 
  30.  
  31.         static::name(); 
  32.  
  33.     } 
  34.  
  35. } 
  36.  
  37.  
  38.  
  39. class Man extends Person 
  40.  
  41. { 
  42.  
  43.     public static function name() 
  44.  
  45.     { 
  46.  
  47.         echo "222"; 
  48.  
  49.         echo "<br />"; 
  50.  
  51.     } 
  52.  
  53. } 
  54.  
  55.  
  56.  
  57. Man::callself();  // output: 111 
  58.  
  59. Man::callstatic();  // output: 222 
  60.  
  61. ?>

Tags: static self

分享到: