关于oop:与php中的$this和self混淆

Confused with $this and self in PHP

本问题已经有最佳答案,请猛点这里访问。

$this和php中的self有什么不同?

当我在php.net上阅读静态关键字时,我对下面的句子感到困惑。

$this is not available inside the method declared as static.

为什么$this在执行此操作时不可用?

任何帮助都将不胜感激!

谢谢!


用于呼叫非静态变量和方法。

用于呼叫静态变量和方法。

什么时候用这个?


这方面的另一个功能方面是,还有一个staticscope,可以用来参考呼叫类上下文中的等级,以对抗定义类上下文。So the code:

1
2
3
4
5
6
7
8
9
10
class A {
    public static function createNew(){
       return new self();
    }
}

class B extends A {
}

$test = B::createNew(); // This will actually yield an instance of A

但如果一个班被定义为

ZZU1

如你所期望的那样,您会得到一个B机构。

这也与静态性能有关,因为在玩self::$propertystatic::$property时,有着不可分割的遗产,这两种情况完全不同。

如果遗传和静态特性/方法是重要的,要知道差异,我的经验在这些案例中总是错误的,并且它可以引导一些有趣的错误,只有当更多的层次上的一个成员在某个时候出现时,才显现出来。


应用于非静态存取类别的成员功能和特性

惠尔

用於存取一类静态成员和静态功能。

一个需要记住的方面是,静态成员只能通过静态方法而不是通过类别的其他成员功能(非静态)获得。