Ce face define / defined / constant
O constantă are un nume, o valoare care nu se mai schimbă și este vizibilă peste tot, inclusiv în funcții. Se folosește fără dolar: define("TVA", 0.21); echo TVA;. Valoarea poate fi un număr, un text, bool, null sau un tablou.
defined("NUME") verifică dacă o constantă a fost definită, iar constant("NUME") îi citește valoarea când ai numele într-o variabilă (inclusiv constante de clasă: constant("Clasa::NUME")).
Spre deosebire de const, define rulează la execuție, deci poate fi pus într-un if. Așa face WordPress în wp-config.php. Al treilea parametru (constante fără majuscule) nu mai este suportat din PHP 8.
Parametri
| Parametru | Descriere |
|---|---|
$constant_name |
Numele constantei. |
$value |
Valoarea constantei. |
$case_insensitive |
Învechit. Din PHP 8 este ignorat și dă avertisment dacă îl pui true. |
Ce returnează
true dacă a fost definită. Dacă există deja, apare un avertisment și returnează false.
Exemple
Exemplul 1: Constante de configurare
<?php
define("SITE_NUME", "dexblog.ro");
define("PE_PAGINA", 10);
define("LIMBI", ["ro", "en"]);
function antet(): string
{
return SITE_NUME . " (" . implode("/", LIMBI) . ")";
}
echo antet() . "\n";
echo "Articole pe pagină: " . PE_PAGINA;
Rezultat
dexblog.ro (ro/en)
Articole pe pagină: 10
Exemplul 2: Definire condiționată cu defined
Un fișier de configurare poate seta o constantă, iar codul îi pune o valoare implicită doar dacă lipsește.
<?php
define("DEBUG", true);
if (!defined("DEBUG")) {
define("DEBUG", false);
}
if (!defined("CACHE_MINUTE")) {
define("CACHE_MINUTE", 15);
}
var_dump(DEBUG);
var_dump(CACHE_MINUTE);
Rezultat
bool(true)
int(15)
Exemplul 3: constant() cu numele într-o variabilă
<?php
define("PRET_STANDARD", 15);
define("PRET_EXPRES", 30);
foreach (["standard", "expres"] as $livrare) {
$nume = "PRET_" . strtoupper($livrare);
echo "Livrare $livrare: " . constant($nume) . " lei\n";
}
echo constant("PHP_INT_SIZE") . " octeți pentru un int";
Rezultat
Livrare standard: 15 lei
Livrare expres: 30 lei
8 octeți pentru un int
Greșeli frecvente
- Pui constanta între ghilimele când o folosești:
echo "TVA";afișează textul „TVA”, nu valoarea. Constantele se scriu fără ghilimele și fără dolar. - Folosești o constantă nedefinită. Din PHP 8 primești eroarea
Undefined constant(în versiunile vechi era transformată tacit în text). - Definești de două ori aceeași constantă. A doua oară primești avertismentul
Constant ... already defined. Verifică întâi cudefined.