8. Fejezet. Konstansok

Tartalom
Szintakszis
Előre definiált konstansok

A konstans egy egyszerű érték azonosítója (neve). Mint ahogy az elnevezése is mutatja, a program futása során nem változtatható meg az értéke (a mágikus __FILE__ és __LINE__ konstansok az egyedüli kivételek ez alól). A konstansok alapesetben érzékenyek a kis- és nagybetűs irásmódra. Megállapodás szerint általában csupa nagybetűs neveket adunk a konstansoknak.

A konstansok neveire a PHP más jelzőivel azonos szabályok vonatkoznak. Egy érvényes konstans név betűvel vagy aláhúzással kezdődik, amit tetszőleges számú betű, szám vagy aláhúzás követ. Reguláris kifejezéssel kifejezve ez a következőt jelenti: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

Megjegyzés: Ebben az esetben egy betű lehet angol betű karakter a-z-ig és A-Z-ig, valamint az ASCII karakterek 127-es kódtól 255-ös kódig (0x7f-0xff).

A konstansok bárhonnan elérhetőek.

Szintakszis

Konstanst a define() függvénnyel tudsz létrehozni. Miután definiáltad, később nem tudod megváltoztatni az értékét, vagy törölni.

Csak skaláris adat (boolean, integer, double vagy string típusú) lehet egy konstans tartalma.

A konstans értékét a nevének megadásával kaphatod meg. A változókkal ellentétben nem szabad $ jelet tenned a konstand neve elé. Használhatod még a constant() függvényt is, ha például a konstans nevét egy változó adja. A get_defined_constants() függvénnyel tudod a definiált konstansok listáját megkapni.

Megjegyzés: A konstansok és a (globális) változók különböző névtérben vannak. Ez azt jelenti, hogy a TRUE és a $TRUE két különböző dolgot jelent.

Ha egy definiálatlan konstanst próbálsz meg használni, a PHP úgy veszi, hogy a konstans nevét veszi karaktersorozatként. Egy notice szintű hiba keletkezik, ha ez történik. A defined() függvényt használhatod, ha konstans létezését szeretnéd vizsgálni.

A következők a fontosabb különbségek a változókhoz képest:

Példa 8-1. Konstansok definiálása


<?php
define("KONSTANS", "Helló világ!");
echo KONSTANS; // kiírja, hogy "Helló világ!"
echo Konstans; // kiírja, hogy "Konstans" és hibát eredményez
?>