php中 static 和 self的区别

self 不会指向实例化的类,而指向本身所在的类, 调用顺序->在本身类中找->找不到报异常
static 指向实例化的类,调用顺序是 从实例化类中找–>然后找父类–>找不到报异常

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  class Boo {  
      protected static $str = "This is class Boo";  
      public static function get_info(){  
 
          echo get_called_class().PHP_EOL;  
          echo self::$str.PHP_EOL;  
          echo static::$str.PHP_EOL;
      }
 
      public function __get($name){
          return $name;
      }
 
  }  
  class Foo extends Boo{  
      protected static $str = "This is class Foo";  
  }  
   Foo::get_info();
 
 
   /*
   result:
    Foo
    This is class Boo
    This is class Foo
    self 不会指向实例化的类,而指向本身所在的类, 调用顺序->在本身类中找->找不到报异常
    static 指向实例化的类,调用顺序是 从实例化类中找-->然后找父类-->找不到报异常
   */

未经允许不得转载:开心乐窝-乐在其中 » php中 static 和 self的区别

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏