【问题标题】:PHP: This and Self [duplicate]PHP:这个和自我[重复]
【发布时间】:2011-05-20 16:24:55
【问题描述】:

可能重复:
PHP: self vs thisWhen to use self over $this

$thisself::有什么区别

示例:

class Object{
   public $property;
   function doSomething(){
        // This
        $something = $this->property;
        // Self
        $something = self::property;
        ...code...
   }
}

【问题讨论】:

标签: php static self


【解决方案1】:

取自这里

链接:http://www.phpbuilder.com/board/showthread.php?t=10354489

使用 $this 来引用当前 目的。使用 self 来指代 当前班级。换句话说,使用 $this->member 用于非静态成员, 对静态成员使用 self::$member。

由约翰·米利金here回答

【讨论】:

    【解决方案2】:

    $this 引用了代码出现的对象,self 是类。您可以在任何方法中使用 $this 调用“常规”方法和属性,并使用 self 调用静态方法和属性

    class A {
        public static $staticVar = 'abc';
        public $var = 'xyz';
        public function doSomething () {
            echo self::$staticVar;
            echo $this->var;
        }
    }
    

    您的“自我”示例无论如何都是无效的。

    【讨论】:

    • 小心selfself 是指链中包含该方法的最新类。如果您在 ParentClassChildClass 中都有一个静态的 $name 属性,它们分别包含“父”和“子”,但使用 self::$nameshowName 仅存在于 ParentClass 然后 @987654334 @ 将返回 Parent 而不是 Child
    • 通常它是首选行为,当self 真正意味着“类本身”而不是任何子类时。使用“后期静态绑定 (static),它总是引用被调用的类。
    【解决方案3】:

    $this 指的是对象的实例,而self 则返回类本身。使用静态调用时,请参考 self,因为您不需要拥有类的实例(即 $this)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      • 2018-03-17
      • 2021-08-30
      • 2020-10-04
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      相关资源
      最近更新 更多