Bir selfsınıf üyesine başvurmak için kullandığınızda, anahtar kelimeyi içinde kullandığınız sınıfa atıfta bulunuyorsunuz. Bu durumda, Foosınıfınız adı verilen korumalı bir statik özelliği tanımlar $bar. Eğer kullandığınız zaman selfiçinde Fooözelliği başvurmak sınıfta, aynı sınıf durumdayız.
Bu nedenle self::$bar, Foosınıfınızda başka bir yerde kullanmayı denediyseniz, ancak Barmülk için farklı bir değere sahip bir sınıfınız varsa , bunun Foo::$baryerine onu kullanırdı Bar::$bar, ki bu sizin niyet ettiğiniz şey olmayabilir:
class Foo
{
protected static $bar = 1234;
}
class Bar extends Foo
{
protected static $bar = 4321;
}
Ne zaman çağrı yoluyla bir yöntem static, sen adlandırılan bir özellik yürütmesini ediyoruz geç statik bağlamaları (PHP 5.3 tanıtıldı).
Yukarıdaki senaryoda, kullanmak (1234) ile selfsonuçlanacaktır Foo::$bar. Ve kullanmak (4321) ile staticsonuçlanacaktır Bar::$barçünkü ile staticyorumlayıcı, Barçalışma zamanı sırasında sınıf içindeki yeniden bildirimi hesaba katar .
Alt sınıflarda özellikleri genellikle yeniden bildirmediğiniz için genellikle yöntemler için veya hatta sınıfın kendisi için özellikler yerine geç statik bağlamaları kullanırsınız; staticGeç bağlanmış bir kurucuyu çağırmak için anahtar sözcüğün kullanımına bir örnek şu ilgili soruda bulunabilir: Yeni benlik ve yeni statik
Bununla birlikte, bu staticözelliklerle birlikte kullanılmasını da engellemez .