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
true
ile $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"
Ö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,
const
anahtar 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,if
deyimlerinin veyatry
/catch
bloklarının içinde bildirilemez.