Söz dizimi
Bir sabit const anahtar sözcüğü kullanılarak tanımlanabilir.
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
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
Sabitler ve değişkenler arasındaki farklar:Bir sabit ismi $ imi ile başlamaz.
Sabitler, değişken etki alanı kurallarına bağlı olmaksızın her yerde
tanımlanabilir ve her yerden erişilebilir.
Sabitler tanımlandıktan sonra yeniden tanımlanamaz ya da tanımsız
duruma getirilemez.
Bir sabit sadece sayıl değerlere veya dizilere çözümlenebilir.
Örnek 1 - Sabitlerin Tanımlanması
define("CONSTANT","Merhaba dünya.");
echoCONSTANT;// "Merhaba dünya" çıktılar.echoConstant;// 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ı
echoSABIT;// Sayıl ifadeconstDIGER_SABIT=SABIT.'; Elveda Dünya';
echoDIGER_SABIT;
constHAYVANLAR= array('köpek','kedi','kuş');
echoHAYVANLAR[1];// "kedi" çıktılanır
// Sabit dizisidefine('HAYVANLAR', array('köpek','kedi','kuş'));
echoHAYVANLAR[1];// "kedi" çıktılanır?>
Bilginize:
Sabitlerin 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 veya try/catch
bloklarının içinde bildirilemez.