Just a quick note:
From PHP7 on you can even define a multidimensional Array as Constant:
define('QUARTLIST',array('1. Quarter'=>array('jan','feb','mar'),'2.Quarter'=>array('may','jun','jul'));
does work as expected.
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"
// 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,
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.
Just a quick note:
From PHP7 on you can even define a multidimensional Array as Constant:
define('QUARTLIST',array('1. Quarter'=>array('jan','feb','mar'),'2.Quarter'=>array('may','jun','jul'));
does work as expected.
Constants of constant :
<?php
const foo = hello;
const bar = foo;
const bd = bar;
echo "bd = " .bd; // Prints out: Hello
?>
const ArrayFromTextfile = file("mytextfile.txt", FILE_IGNORE_NEW_LINES);
does not work, it throws an error:
Fatal error: Constant expression contains invalid operations in php shell code on line …
Instead use:
define ("ArrayFromTextfile", file("mytextfile.txt", FILE_IGNORE_NEW_LINES));
print_r(ArrayFromTextfile);
Result:
Array
(
[0] ⇨ Line 1
[1] ⇨ Line 2
[2] ⇨ Line 3
[3] => …
)
With PHP 5.6, multi-dimensional arrays are also possible if you use "const" instead of "define". So,
define('QUARTLIST',array('1. Quarter'=>array('jan','feb','mar'),'2.Quarter'=>array('may','jun','jul')));
won't work with PHP 5.6, but
const QUARTLIST=array('1. Quarter'=>array('jan','feb','mar'),'2.Quarter'=>array('may','jun','jul'));
will.