static
Anahtar Sözcüğü
Sınıf özelliklerinin ya da yöntemlerinin static
olarak
tanımlanması, o özelliklerin ve yöntemlerin sınıf örneğinin oluşturulmasına
gerek kalmadan erişilebilir olmalarını sağlar. Ancak, static
olarak bildirilmiş bir özelliğe (duruk özellik) ö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 özellik 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 özellik ö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ı
?>