PHP中的$ this和self有什么不同?
虽然我读static keywordphp.net,我对以下句子感到困惑。
$这在声明为static的方法内不可用。
为什么$这样做不可用?
任何帮助将不胜感激!
谢谢!
PHP中的$ this和self有什么不同?
虽然我读static keywordphp.net,我对以下句子感到困惑。
$这在声明为static的方法内不可用。
为什么$这样做不可用?
任何帮助将不胜感激!
谢谢!
感谢您的回答!您提供的链接非常棒! – user2364801 2013-05-09 05:21:59
$this
用于访问类的成员函数和成员属性它们的非静态
而
self
用于访问静态成员和一类的静态函数。
使用Static时需要记住的一件事是静态成员只能由静态方法访问,而不能由类的其他成员函数(非静态)访问。
这样做的另一个有趣的方面是,还有一个static
作用域,它可以引用调用类上下文的类而不是定义的类上下文。因此,代码:
class A {
public static function createNew(){
return new self();
}
}
class B extends A {
}
$test = B::createNew(); // This will actually yield an instance of A
但如果类A定义为
class A {
public static function createNew(){
return new static();
}
}
然后$test = B::createNew();
将产生B的情况下你所期望的。
这也与静态属性有关,当存在继承时self::$property
和static::$property
可能意味着两个完全不同的东西。
如果继承和静态属性/方法在起作用,重要的是要知道差异,以我的经验来看,在这些情况下,自我几乎总是错误的,它可能导致一些有趣的错误,只有当多于一个成员类层次结构在给定的时间内发挥作用。
你也可以检查[这个答案](http://stackoverflow.com/questions/1948315/wheres-the-difference-between-self-and-this-in-a-php-class-or-php-方法) – MISJHA 2013-05-09 04:14:59
看看这个链接http://php.net/manual/en/language.oop5.basic.php – slackmart 2013-05-09 04:22:01