(PHP 4, PHP 5, PHP 7, PHP 8)
define — Bir isimli sabit tanımlar
Çalışma sırasında bir isimli sabit tanımlamaya yarar.
sabit_ismi
Sabitin ismi.
Bilginize:
Ayrılmış ve hatta geçersiz adlarla sabit tanımlamak mümkündür. Bunların değeri (yalnızca) constant() ile alınabilir. Ancak bunu yapmanız önerilmez.
değer
Sabitin değeri. integer, float, string, boolean, array veya null
türünde değerler kabul edilir.
resource türünde sabitler tanımlamak mümkün ise de beklenmedik davranışlara yol açacağından bu önerilmez.
harf_büyüklüğüne_duyarsız
true
belirtilirse, tanımlanan sabitin ismi harf büyüklüğüne duyarsız olarak tanımlanır. Öntanımlı davranış harf büyüklüğüne duyarlıdır; yani SABiT
ve Sabit
farklı sabitler olarak ele alınır.
PHP 7.3.0 ve sonrasında harf büyüklüğüne duyarsız sabitlerin kullanımı önerilmemektedir. PHP 8.0.0 ve sonrasında, sadece false
değeri kabul edilmektedir. true
değeri bir uyarı üretecektir.
Bilginize:
Harf büyüklüğüne duyarsız sabitler küçük harfli saklanır.
Sürüm: | Açıklama |
---|---|
8.0.0 | harf_büyüklüğüne_duyarsız bağımsız değişkeninde true aktarımı artık bir E_WARNING çıktılıyor. false aktarımı ise hala destekleniyor. |
7.3.0 | harf_büyüklüğüne_duyarsız bağımsız değişkeninin kullanımı önerilmemektedir. PHP 8.0.0 sürümünde kaldırılacaktır. |
7.0.0 | array türünde değerlere izin verilmektedir. |
Örnek 1 - Sabit tanımlamak
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // çıktısı: "Hello world."
echo Constant; // çıktısı: "Constant" Ayrıca bir uyarı çıktılanır.
define("GREETING", "Hello you.", true);
echo GREETING; // çıktısı: "Hello you."
echo Greeting; // çıktısı: "Hello you."
// PHP 7 ve sonrasında çalışır
define('ANIMALS', array(
'dog',
'cat',
'bird'
));
echo ANIMALS[1]; // çıktısı: "cat"
?>
Örnek 2 - Ayrılmış isimli sabitler
Bu örnek, bir sihirli sabit ile aynı ada sahip bir sabiti tanımlama durumundaki davranışı göstermektedir. Ortaya çıkan davranış açıkça kafa karıştırıcı olduğundan, pratikte bunu yapmanız önerilmez.
<?php
var_dump(defined('__LINE__'));
var_dump(define('__LINE__', 'test'));
var_dump(constant('__LINE__'));
var_dump(__LINE__);
?>
Yukarıdaki örneğin çıktısı:
bool(false) bool(true) string(4) "test" int(5)