nasıl ben aynı sınıf içinde başka bir yöntemle statik bir yöntem diyveyasunuz?
$this->staticMethod();
veya
$this::staticMethod();
Kullanıcının bu sınıf varsayalım:
class Test
{
private $baz = 1;
public function foo() { ... }
public function bar()
{
printf("baz = %d\n", $this->baz);
}
public static function staticMethod() { echo "static method\n"; }
}
foo()
yöntemi içinde, en farklı seçenekler bakalım:
$this->staticMethod();
Yani doğru, staticMethod()
örnek yöntemi olarak çağırır? Öyle değil. Yöntemi public static
tercüman statik bir yöntem olarak arayacak olarak ilan edilir, bu nedenle beklendiği gibi çalışacak olmasıdır. O bunu yaparken, statik bir yöntem çağrısı yer alıyor koddan daha az belirgin hale söylenebilir.
$this::staticMethod();
PHP 5.3 beri $var::method()
<class-of-$var>::
anlamına kullanabilirsiniz; Yukarıdaki kullanım durum hala oldukça sıradışı olsa bu, oldukça uygundur. Yani bu bir statik yöntemi çağırmak en yaygın şekilde bize getiriyor:
self::staticMethod();
Eğer ::
the statik çağrı operatörü olduğunu düşünmeye başlamadan önce Şimdi, ben size başka bir örnek vereyim:
self::bar();
Bu $this->bar()
ve self::bar()
tam olarak aynı şeyi yapmak anlamına gelir ki, baz = 1
basacaktır; ::
sadece bir kapsam çözünürlük operatörü çünkü. Bu parent::
, self::
ve static::
çalışması yapmak ve statik değişkenlere erişim sağlamak için var; yöntem denir nasıl onun imza bağlıdır ve arayan denirdi nasıl.
, Eylem tüm bu görmek görmek için this 3v4l.org output.