Sabit değerlerinin her sınıf için
ayrı ayrı tanımlanabilmesi mümkündür.
Sabit sınıflarının öntanımlı görünülüğü public
'tir.
Bilginize:
Sınıf sabitlerini bir çocuk sınıf yeniden tanımlayabilir. PHP 8.1.0 itibariyle, final olarak tanımlanmış sınıf sabitlerini çocuk sınıflar yeniden tanımlayamaz.
Ayrıca, nesne arayüzlerinin de kendi sabitlerinin olması mümkündür. Örnekler için Nesne Arayüzleri belgesine bakınız.
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";
$class = new MyClass();
$class->showConstant();
echo $class::CONSTANT."\n";
?>
Özel ::class
sabiti ile
derleme sırasında tamamen nitelenmiş sınıf ismi çözünürlüğü mümkün
olup isim alanlı sınıflar için kulllanışlıdır:
Örnek 2 - İsim alanlı ::class örneği
<?php
namespace foo {
class bar {
}
echo bar::class; // foo\bar
}
?>
Örnek 3 - Sınıf sabitinde ifade kullanımı
<?php
const BİR = 1;
class foo {
const İKİ = BİR * 2;
const ÜÇ = BİR + self::İKİ;
const CÜMLE = 'ÜÇ için değer: '.self::THREE;
}
?>
Örnek 4 - Sınıf sabiti görünürlük değiştiricileri (PHP 7.1.0 ve sonrası)
<?php
class Foo {
public const BAR = 'bar';
private const BAZ = 'baz';
}
echo Foo::BAR, PHP_EOL;
echo Foo::BAZ, PHP_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.