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şkenler ile statik isimsiz işlevlerin tanımlanması 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 
To Top