static Anahtar Sözcüğü

İpucu

Bu sayfada duruk yöntem ve özellikleri tanımlamak için static anahtar sözcüğünün kullanımı açıklanmıştır. static ayrıca, duruk değişkenleri tanımlamak ve duruk içselleştirim için de kullanılır. Lütfen static anahtar sözcüğünün anlamları hakkında bilgi edinmek için bu sayfalara bakınız.

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öntemler

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.

Dikkat

PHP 5'te, duruk olmayan özellikler durukmuş gibi çağrılırsa E_STRICT seviyesinde bir uyarı üretilir.

Uyarı

PHP 7'de, duruk olmayan yöntemlerin duruk olarak çağrılması artık önerilmemekte olup bir E_DEPRECATED uyarısı üretir.warning. duruk olmayan yöntemlerin duruk olarak çağrılması desteği yakında kaldırılabilir.

Örnek 1 - Duruk yöntem örneği

<?php
class Foo {
    public static function 
durukYöntem() {
        
// ...
    
}
}

Foo::durukYöntem();
$classname 'Foo';
$classname::durukYöntem(); // PHP 5.3.0 ve sonrası
?>

Duruk Özellikler

Duruk özelliklere, nesne üzerinden ok işleci (->) kullanılarak erişilemez.

PHP 5.6 öncesinde diğer duruk değişkenlerde olduğu gibi duruk özellikler de sadece bir sayıl veya sabit kullanılarak ilklendirilebilir; ifadelere izin verilmez. PHP 5.6.0 ve sonrasında const için geçerli kurallar uygulanır: bazı sınırlı ifadeler mümkündür, bunlar derleme sırasında değerlendirilir.

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 2 - 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";
?>