static Anahtar Sözcüğü

İpucu

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

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.

Statik Yöntemler

Statik yöntemlerin, nesnenin bir örneği oluşturulmadan erişilebilir olmalarından dolayı, $this sözde değişkeni, static olarak bildirilmiş yöntemlerin içinde kullanılamaz.

Uyarı

Statik olmayan yöntemlerin statik olarak çağrılması bir Error yavrulanmasına sebep olur.

PHP 8.0.0 öncesinde ise, statik olmayan yöntemlerin statik olarak çağrılması önerilmemekte ve bir E_DEPRECATED uyarısı üretmekteydi.

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

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

Foo::statikYöntem();
$classname 'Foo';
$classname::statikYöntem();
?>

Statik Özellikler

Statik özelliklere, nesne üzerinden ok işleci (->) kullanılarak değil, Etki Alanı Çözünürlük İşleci (::) (::) kullanılarak erişilebilir.

Diğer statik değişkenlerde olduğu gibi statik özellikler const ifadeleri için geçerli kurallarla ilklendirilebilir: Bazı sınırlı ifadeler mümkündür, bunlar derleme sırasında değerlendirilir.

Bir sınıfa bir değişken kullanarak gönderim yapılabilir. Böyle bir değişkenin değeri self, parent veya static gibi bir anahtar sözcük olamaz.

Örnek 2 - Statik özellik örneği

<?php
class Falanca
{
    public static 
$statik 'falanca';

    public function 
statikDeğer() {
        return 
self::$statik;
    }
}

class 
Feşmekan extends Falanca
{
    public function 
falancaStatik() {
        return 
parent::$statik;
    }
}


print 
Falanca::$statik "\n";

$falanca = new Falanca();
print 
$falanca->statikDeğer() . "\n";
print 
$falanca->statik "\n";      // Tanımsız "Özellik" statik

print $falanca::$statik "\n";
$sınıfadı 'Falanca';
print 
$sınıfadı::$statik "\n";

print 
Feşmekan::$statik "\n";
$feşmekan = new Feşmekan();
print 
$feşmekan->falancaStatik() . "\n";
?>

Yukarıdaki örneğin PHP 8.0 çıktısı şuna benzer:

falanca
falanca

Notice: Accessing static property Falanca::$statik as non static in /in/V0Rvv on line 23

Warning: Undefined property: Falanca::$statik in /in/V0Rvv on line 23

falanca
falanca
falanca
falanca