static
Anahtar Sözcüğü
Sınıf üyelerinin ya da yöntemlerinin static
olarak
tanımlanması, o üyelerin ve yöntemlerin sınıf örneğinin oluşturulmasına
gerek kalmadan erişilebilir olmalarını sağlar. Ancak, static
olarak bildirilmiş bir üyeye (duruk üye) örneklenmiş sınıf nesnesinden
erişilemez (ise de static
olarak bildirilmiş bir yöntemle
erişebilir).
PHP 4 ile uyumluluğun sağlanabilmesi için, eğer bir üye veya yöntem için hiçbir görünürlük tanımı yapılmamışsa public olarak tanımlanmış varsayılır.
Duruk yöntemlerin, nesnenin bir örneği oluşturulmadan erişilebilir
olmalarından dolayı, $this sözde değişkeni,
static
olarak bildirilmiş bir yöntemin içinde kullanılamaz.
Duruk özelliklere, nesne üzerinden ok işleci (->) kullanılarak erişilemez.
Duruk olmayan özellikler durukmuş gibi çağrılırsa E_STRICT seviyesinde bir uyarı üretilir.
PHP'nin diğer duruk değişkenlerinde olduğu gibi duruk özellikler de sadece bir sayıl veya sabit kullanılarak ilklendirilebilir; ifadelere izin verilmez. Yani, bir duruk özelliği örneğin, bir tamsayı veya bir dizi ile ilklendirebilirsiniz ama örneğin, bir işlevin dönen değeri, bir değişken veya bir nesne ile ilklendiremezsiniz.
PHP 5.3.0 ve sonrasında, bir sınıfa bir değişken kullanarak gönderim yapılabilmektedir. Böyle bir değişkenin değeri self, parent veya static gibi bir anahtar sözcük olamaz.
Örnek 1 - Duruk üye örneği
<?php
class Falanca
{
public static $duruk = 'falanca';
public function durukDeğer() {
return self::$duruk;
}
}
class Feşmekan extends Falanca
{
public function falancaDuruk() {
return parent::$duruk;
}
}
print Falanca::$duruk . "\n";
$falanca = new Falanca();
print $falanca->durukDeğer() . "\n";
print $falanca->duruk . "\n"; // Tanımsız "Özellik" duruk
print $falanca::$duruk . "\n";
$sınıfadı = 'Falanca';
print $sınıfadı::$duruk . "\n"; // PHP 5.3.0 ve sonrası
print Feşmekan::$duruk . "\n";
$feşmekan = new Feşmekan();
print $feşmekan->falancaDuruk() . "\n";
?>
Örnek 2 - Duruk yöntem örneği
<?php
class Falanca {
public static function birDurukYöntem() {
// ...
}
}
Falanca::birDurukYöntem();
$sınıfadı = 'Falanca';
$sınıfadı::birDurukYöntem(); // PHP 5.3.0 ve sonrası
?>