static Anahtar Sözcüğü
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ö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.
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 ö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