Bir sabiti define() işlevini kullanarak veya PHP 5.3.0'dan 5.6.0'a kadar sınıf tanımlarının dışında const anahtar sözcüğünü kullanarak tanımlayabilirsiniz. PHP 5.6.0'dan itibaren ise, bir sabiti bir sayısal sabit olarak veya array türünde bir sabit olarak tanımlamak mümkündür. Sabitleri resource türünde tanımlamak mümkünse de beklenmedik sorunlara yol açabileceğinden bundan kaçınılmalıdır.
Bir sabit ismine yalnızca bir sayıl değer (boolean, integer, float veya string) atanabilir. Sabitleri resource olarak kayıt altına almak mümkündür, fakat umulmadık sonuçlara yol açabileceğinden bundan kaçınılmalıdır.
Bir sabitin değerini basitçe ismini belirterek alabilirsiniz. Değişkenlerin aksine, sabitlerin önüne $ imi eklemeniz gerekmez. Bunun yanında, bir sabitin ismini devingen şekilde elde etmek isterseniz, sabitin değerini okumak için constant() işlevini de kullanabilirsiniz. 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 ismi kullanırsanız, PHP, bir sabit değil bir
sayıl değer kullanmak istediğinizi varsayar ve sabiti string
türünde bir değer (SABIT yerine "SABIT" ) olarak ele alır. Böyle bir
durumda E_NOTICE seviyesinde bir
hata çıktılanır. Ayrıca, $foo[bar]
kullanımının (evvelce
define() işleviyle bar isminde bir
sabit tanımlamamışsanız) neden yanlış olduğuyla ilgili açıklamayı $foo[bar]
neden
yanlıştır? başlığı altında bulabilirsiniz. Bu (tamamen) nitelenmiş sabitlere
uygulanmaz, çünkü tanımsız olduğunda ölümcül bir hataya yol açar. Bir
sabitin tanımlı olup olmadığını defined() işlevi
sayesinde kolayca öğrenebilirsiniz.
Sabitler ve değişkenler arasındaki farklar:
Örnek 1 - Sabitlerin Tanımlanması
<?php
define("CONSTANT", "Merhaba dünya.");
echo CONSTANT; // "Merhaba dünya" çıktılar.
echo Constant; // "Constant" çıktılar ve bir bilgi iletisi gösterir.
?>
Örnek 2 - Sabitlerin const
ile tanımlanması
<?php
// PHP 5.3.0 ve sonrasında çalışır
const SABIT = 'Merhaba Dünya';
echo SABIT;
// PHP 5.6.0 ve sonrasında çalışır
const DIGER_SABIT = SABIT.'; Elveda Dünya';
echo DIGER_SABIT;
const HAYVANLAR = array('köpek', 'kedi', 'kuş');
echo HAYVANLAR[1]; // "kedi" çıktılanır
// PHP 7 ve sonrasında çalışır
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 veya try/catch bloklarının içinde bildirilemez.
Ayrıca, Sınıf Sabitleri belgesine de bakınız.