Kendinize şunu sormalısınız: "Sorunu uygun yaklaşımla mı hedefliyoruz?"
self::
ve static::
iki farklı şey yapar. Örneğin self::
veya __CLASS__
statik ileri çağıran ihtiyacını yeterli yüzden değil, belli kapsamda tanımlanan akım sınıfına referanslar vardır.
Mirasta ne olacak?
class A {
public static function className(){
echo __CLASS__;
}
public static function test(){
self::className();
}
}
class B extends A{
public static function className(){
echo __CLASS__;
}
}
B::test();
Bu Bu yazdırır Bu beklenen davranış
class A {
public static function className(){
echo __CLASS__;
}
public static function test(){
static::className();
}
}
class B extends A{
public static function className(){
echo __CLASS__;
}
}
B::test();
sahiptir static::
ile diğer taraftan ise
A
yazdırırdenir
B
. Bu
zamanında de başvuruldu sınıf çağıran sınırlandırılmasını çözer.
Bu düşünceyle, sorunu şimdi yeterince görebileceğinizi ve çözebileceğinizi düşünüyorum. Birkaç statik üye devralma ve ebeveyn ve çocuk üyelerine erişim gerekiyorsa self::
yeterli olmayacaktır.
bence 'Statik' ilk etapta yanlış bir yaklaşımdır. Kulağa hoş geliyor (ve eğer yanlış olursa lütfen düzeltin), sadece kodunuzu yoksaydınız. – PeeHaa