zoukankan      html  css  js  c++  java
  • php--->self与static区别

    self与static区别

    • 在PHP中,调用一个静态变量,我们既可以使用self也可以使用static,结果也许都是我们期望的,但是,有时候并不是我们所想的那样,static和self的区别还是很大的,下面我们进行代码来进一步说明它们之间的区别。
    <?php   
      class Boo {          
          protected static $str = "This is class Boo";          
          public static function get_info(){              
              echo get_called_class()."<br>";  
              echo self::$str;  
          }    
      }  
      class Foo extends Boo{          
          protected static $str = "This is class Foo";          
      }    
       Foo::get_info();  
    ?>  
    
    //结果:This is class Boo
    
    
    码来进一步说明它们之间的区别。
    
    <?php   
      class Boo {          
          protected static $str = "This is class Boo";          
          public static function get_info(){              
              echo get_called_class()."<br>";  
              echo static::$str;  
          }    
      }  
      class Foo extends Boo{          
          protected static $str = "This is class Foo";          
      }    
       Foo::get_info();  
    ?>  
    
    //结果:This is class Foo
    
    
    • 发现结果不是我们预期的那样,为什么呢?
    • self调用的就是本身代码片段这个类,而static调用的是从堆内存中提取出来,访问的是当前实例化的那个类,那么 static 代表的就是那个类,例子比较容易明白些。
  • 相关阅读:
    printf,wprintf与setlocale,char与wchar_t区别
    C++常量表达式、const、constexpr(C++11新增)的区别
    珍珠项链 Beads
    A Horrible Poem
    三个朋友
    Seek the Name, Seek the Fame
    Power Strings
    图书管理
    子串查找
    山峰和山谷 Ridges and Valleys
  • 原文地址:https://www.cnblogs.com/frankltf/p/8951483.html
Copyright © 2011-2022 走看看