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