zoukankan      html  css  js  c++  java
  • PHP中parent、this、self和static的区别

    参考:

    http://www.cnblogs.com/devcjq/articles/2424738.html

    http://www.cnblogs.com/alsf/p/9621002.html

    https://blog.csdn.net/xf552527/article/details/81325815

    1.PHP之parent解析

    parent是指向父类的指针,一般用于调用父类的构造函数来初始化子类,如parent::__construct()

    2.PHP之$this解析

    $this是指向当前对象(即类的实例化对象)的指针
    • $this 指向的是实际调用时的对象,也就是说,实际运行过程中,谁调用了类的属性或方法,$this 指向的就是哪个对象。
    • $this 不能访问类的静态属性和常量,且 $this 不能存在于静态方法中,因为静态变量和静态方法是属于类的,而非属于类实例化后的对象。
    • 如果要在静态方法中,强制使用类的其他方法,则只能先获取类的实例化对象(new classname()),然后再使用该对象的方法。
    • 当一个方法在类定义内部被调用时,有一个可用的伪变量 $this。$this 是一个到主叫对象的引用(通常是该方法所从属的对象)。

    3.PHP之self解析

    self是指向当前类的指针,而非实例化后的对象指针
    • self 和 __CLASS__,都是对当前类的静态引用,取决于定义当前方法所在的类。即self 写在哪个类里面,它引用的就是谁
    • 由于静态变量和静态方法是属于类的,因此可以使用指向当前类的指针self调用。
    • self 可以用于访问类的静态属性、静态方法和常量,但 self 指向的是当前定义所在的类,这是 self 的限制

    4.PHP之static解析

    static是指向当前调用类的指针
    • 静态调用时,static 指向的是实际调用时的类;非静态调用时,static 指向的是实际调用时的对象所属的类
    • static 可以用于静态或非静态方法中,也可以访问类的静态属性、静态方法、常量和非静态方法,但不能访问非静态属性。
    • static 关键字除了可以声明类的静态成员(属性和方法)外,还有一个非常重要的作用就是后期静态绑定
    <?php 
     
      class Boo {
          
          protected static $str = "This is class Boo";
          
          public static function get_info(){
              
              echo get_called_class()."
    ";
              echo self::$str;
          } 
          
          public static function get_msg(){
              echo get_class()."
    ";
              echo static::$str;
          }
      }
      
      class Foo extends Boo{
          
          protected static $str = "This is class Foo";
          
      }
      
       Foo::get_info();
       echo "
    ";
       Foo::get_msg();
     
    ?>
    
    //输出结果
    Foo
    This is class Boo
    Boo
    This is class Foo
  • 相关阅读:
    【BZOJ】【3004】吊灯
    【BZOJ】【3653】谈笑风生
    【BZOJ】【2500】幸福的道路
    【BZOJ】【3612】【HEOI 2014】平衡
    【BZOJ】【1485】【HNOI2009】有趣的数列
    【BZOJ】【1293】【SCOI2009】生日礼物
    【BZOJ】【1055】【HAOI2008】玩具取名
    【BZOJ】【1053】【HAOI2007】反素数ant
    【BZOJ】【1052】【HAOI2007】覆盖问题
    【BZOJ】【1050】【HAOI2006】旅行comf
  • 原文地址:https://www.cnblogs.com/yueyun00/p/10043490.html
Copyright © 2011-2022 走看看