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
  • 相关阅读:
    delete 用法总结
    js数组去重的常用方法总结
    学习中 常用到的string内置对象方法的总结
    Array 对象常用的方法总结
    javascript中运算符有哪些? 他们的优先级 呢?
    那些年前端经典面试题
    HHVM 3.0 发布,执行 PHP 的虚拟机
    【问底】徐汉彬:PHP7和HHVM的性能之争 (真是学到了很多)
    mysql 简单sql语句
    【问底】王帅:深入PHP内核(一)——弱类型变量原理探究
  • 原文地址:https://www.cnblogs.com/yueyun00/p/10043490.html
Copyright © 2011-2022 走看看