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.