Sınıf Sabitleri

Sabitlerin her sınıf için ayrı ayrı tanımlanabilmesi mümkündür. Sabitler diğer değişkenlerden tanımlanmaları ve kullanılmaları sırasında başlarına getirilmeyen $ imi sayesinde ayrılırlar. Sabit sınıflarının öntanımlı görünülüğü public'tir.

Değer, örneğin, bir değişken, bir sınıf özelliği, bir matematiksel işlemin sonucu veya bir işlev çağrısı değil, bir sabit ifade olmalıdır.

Ayrıca, sınıf arayüzlerinin de kendi sabitlerinin olması mümkündür. Örnekler için Nesne Arayüzleri belgesine bakınız.

PHP 5.3.0'dan itibaren, bir sınıfa bir değişken kullanarak atıfta bulunmak mümkündür. Değişkenin değeri, self, parent, static gibi bir anahtar sözcük olamaz.

Sınıf sabitlerinin her sınıf örneği için değil her sınıf için bir kere ayrıldığını unutmayın.

Örnek 1 - Bir sabitin tanımlanması ve kullanımı

<?php
class MyClass
{
    const 
CONSTANT 'sabit değer';

    function 
showConstant() {
        echo  
self::CONSTANT "\n";
    }
}

echo 
MyClass::constant "\n";

$classname "MyClass";
echo 
$classname::CONSTANT "\n"// PHP 5.3.0'dan itibaren

$class = new MyClass();
$class->showConstant();

echo 
$class::CONSTANT."\n"// PHP 5.3.0'dan itibaren
?>

Örnek 2 - Duruk veri örneği

<?php
class foo {
    
// PHP 5.3.0'dan itibaren
    
const BAR = <<<'EOT'
bar
EOT;
    
// PHP 5.3.0'dan itibaren
    
const BAZ = <<<EOT
baz
EOT;
}
?>

Bilginize:

Duruk veri bağlamında yorumlanan çok satırlı metinler (heredoc) ve yorumlanmayan çok satırlı metinlerle (nowdoc) ssbitlerin ilklendirilmesi desteği desteği 5.3.0'da eklenmiştir.

Özel ::class sabiti desteği 5.5.0'da eklenmiş olup, derleme sırasında tamamen nitelenmiş sınıf ismi çözünürlüğü mümkün kılınmıştır ve isim alanlı sınıflar için kulllanışlıdır:

Örnek 3 - İsim alanlı ::class örneği

<?php
namespace foo {
    class 
bar {
    }

    echo 
bar::class; // foo\bar
}
?>

Örnek 4 Sabit ifadesi örneği

<?php
const BİR 1;

class 
foo {
    
// PHP 5.6.0 ve sonrası
    
const İKİ BİR 2;
    const 
ÜÇ BİR self::İKİ;
    const 
CÜMLE 'ÜÇ için değer: '.self::THREE;
}
?>

Bir sınıf sabiti bağlamında sayısal ve dize sabitlerini ve/veya sabitleri içeren bir sayısal ifade sağlamak mümkündür.

Bilginize:

Sabit ifadesi desteği PHP 5.6.0'da eklendi.

Örnek 5 - Sınıf sabiti görünürlük değiştiricileri

<?php
class Foo {
    
// PHP 7.1.0 ve sonrası
    
public const BAR 'bar';
    private const 
BAZ 'baz';
}
echo 
Foo::BARPHP_EOL;
echo 
Foo::BAZPHP_EOL;
?>

Yukarıdaki örneğin PHP 7.1 çıktısı:

bar

Fatal error: Uncaught Error: Cannot access private const Foo::BAZ in …

Bilginize:

Sınıf sabitlerinde görünürlük değiştiricileri desteği PHP 7.1.0'da eklendi.