Bir sabit define() işlevi veya
const anahtar sözcüğü kullanılarak tanımlanabilir.
define() bir sabitin rastgele bir ifadede tanımlanmasına
izin verir. const anahtar sözcüğünün ise aşağıdaki
paragrafta açıklanan bazı kısıtlamaları vardır. Bir sabit tanımlandıktan
sonra asla değiştirilemez ve tanımsız yapılamaz.
const anahtar sözcüğü kullanılırken, yalnızca sayıl
(bool, int, float ve
string) ifadeler ve yalnızca sayıl ifadeler içeren sabit
dizileri kabul edilir. Sabitleri resource olarak tanımlamak
mümkünse de, umulmadık sonuçlara yol açabileceğinden bundan kaçınılmalıdır.
Bir sabitin değerine basitçe ismi belirtilerek erişilebilir.
Değişkenlerin aksine, sabitlerin önüne $ imi
eklemeMEniz gerekir. Bir sabitin
ismi dinamik olarak belirtiliyorsa, sabitin değerini okumak
için constant() işlevini kullanmak mümkündür.
Tanımlanmış sabitlerin tamamının bir listesini almak için,
get_defined_constants() işlevini kullanabilirsiniz.
Bilginize: Sabitlerin ve (genel) değişkenlerin isim alanları farklıdır. Bu, örneğin
trueile $TRUE değerlerinin farklı olabilecekleri anlamına gelir.
Tanımlanmamış bir sabit kullanırsanız, bir Error
yavrulanır. PHP 8.0.0 öncesinde, tanımsız sabitler çıplak bir kelime
dizesi olarak yorumlanır (SABIT yerine "SABIT" gibi). PHP 7.2.0 ve
sonrasında bu kullanım önerilmemekte olup böyle bir durumda bir
E_WARNING çıktılanır. PHP 7.2.0 öncesinde ise E_NOTICE seviyesinde bir hata çıktılanırdı.
Ayrıca $foo[bar]'ın
(bar bir sabit olmadıkça) neden yanlış olduğuna dair açıklamaya da bakın.
Bu durum, tanımlanmadıkları takdirde daima bir Error
yavrulayan (tamamen) nitelenmiş
sabitlere uygulanmaz.
Bilginize: Bir sabitin atanıp atanmadığına bakmak için defined() işlevini kullanın.
Sabitler ve değişkenler arasındaki farklar:
$ imi ile başlamaz.
Örnek 1 - Sabitlerin Tanımlanması
<?php
define("CONSTANT", "Merhaba dünya.");
echo CONSTANT; // "Merhaba dünya" çıktılar.
echo Constant; // Hata verir: Tanımlanmamış sabit "Constant"
// PHP 8.0.0 öncesinde. "Constant" çıktılanıp bir uyarı verilirdi.
?>
Örnek 2 - Sabitlerin const ile tanımlanması
<?php
// Basit sayıl değer
const SABIT = 'Merhaba Dünya';
echo SABIT;
// Sayıl ifade
const DIGER_SABIT = SABIT.'; Elveda Dünya';
echo DIGER_SABIT;
const HAYVANLAR = array('köpek', 'kedi', 'kuş');
echo HAYVANLAR[1]; // "kedi" çıktılanır
// Sabit dizisi
define('HAYVANLAR', array(
'köpek',
'kedi',
'kuş'
));
echo HAYVANLAR[1]; // "kedi" çıktılanır
?>Bilginize:
Sabitlerin define() kullanılarak tanımlanmasının tersine,
constanahtar sözcüğü ile tanımlanan sabitler derleme sırasında tanımlandıklarından en üst seviye etki alanında bildirilmiş olmalıdır. Yani bunlar işlevlerin, döngülerin,ifdeyimlerinin veyatry/catchbloklarının içinde bildirilemez.