Cum este atribuită o valoare unei constante în PHP. Constante standard PHP. Verificarea existentei unei constante

27.10.2019 Recenzii

În această postare ne vom da seama în ce este diferența Anunț PHP constante folosind cuvântul cheie const și funcția define().

Constantele în PHP sunt „constante” ale căror valori sunt specificate o singură dată și apoi nu pot fi modificate. Dacă încercați să modificați valoarea, aceasta nu se va modifica și va apărea o notă PHP: „Constant deja definită”:

Define("FOO", "val"); define("FOO", "val2"); // Observație: Echo FOO constant deja definit; //> val

Există două moduri de a declara constante în PHP:

// 1 define("NUME", "VALOARE"); // 2 const NUME = "VALOARE";

Fiecare metodă are propriile sale caracteristici, pentru a le înțelege, să ne uităm la totul pas cu pas, cum și ce s-a schimbat cu fiecare versiune de PHP.

Cum se creează constante

PHP mai mic de 5.3

Înainte de 5.3 în PHP, constantele puteau fi definite numai folosind define() . Cuvântul cheie const a apărut în versiunea 5.3.

Numai scalarii pot stoca constante. Variabilele scalare sunt variabile cu tipurile întreg, flotant, șir și boolean. Tipurile de matrice, obiect și resurse nu sunt scalare.

// scalari define("FOO", 10); define("FOO", 10.9); define("FOO", "val"); define("FOO", adevărat); // nu scalari define("FOO", array(1)); // constanta nu este setată și obținem Warning define("FOO", (obiect) array(1)); // constanta nu este setată și primim un avertisment

Din PHP 5.3

A apărut cuvânt cheie const și acum poate fi definită și o constantă folosindu-l.

Cu toate acestea, nu puteți specifica o variabilă, funcție sau un fel de expresie în const, dar trebuie să treceți scalarul „direct”:

Const FOO = "val"; // fără erori const FOO = $var; // Eroare de analiză const FOO = home_url(); // Eroare de analiză const FOO = 5 + 10; // Eroare de analiză const FOO = "foo"."bar"; // Eroare de analiză

În timp ce pentru define() nu există astfel de restricții...

Define("FOO", "val"); // nicio eroare define("FOO", $var); // nicio eroare define("FOO", home_url()); // nicio eroare define("FOO", 5 + 10); // nicio eroare define("FOO", "foo"."bar"); // fără greșeală

PHP 5.6

A devenit posibil să se specifice valorile primitive în valori constante Expresii PHP(expresii din scalari):

Const FOO = 1 + 2; const FOO = „foo” . "bar";

A devenit posibil să stocați matrice în constante:

Const FOO = ; // functioneaza define("FOO", ); // nu funcționează în PHP 5.6, funcționează în PHP 7.0

Diferența dintre define() și const

#1 const trebuie declarat în domeniul de aplicare superior

Spre deosebire de define() , const trebuie declarat în partea de sus a domeniului de aplicare, deoarece sunt definite atunci când scriptul este compilat. Aceasta înseamnă că nu pot fi declarate în interiorul funcțiilor/buclelor/instrucțiilor if sau blocurilor try/catch.

Dacă (1) (const NUME = „VALOARE”; // nu funcționează) // dar dacă (1) ( define(„NUME”, „VALOARE”); // funcționează)

#2 const este întotdeauna sensibil la majuscule

const este întotdeauna sensibil la majuscule, în timp ce define() vă permite să faceți constante care nu țin cont de majuscule:

Definiți ("NUME", "VALOARE", adevărat); ecou NUME; // VALOARE nume ecou; // VALOARE

#3 const înțelege doar scalarii

Acest lucru este valabil doar pentru versiunile PHP 5.6 și mai mici...

const nu poate fi transmis la variabile, funcții, expresii, dar define() poate fi:

Const FOO = $var; // Eroare de analiză const FOO = home_url(); // Eroare de analiză define("FOO", $var); // nicio eroare define("FOO", home_url()); // fără greșeală

#4 const poate stoca matrice începând cu PHP 5.6 și poate defini începând cu PHP 7.0

const FOO = ; // funcționează în PHP 5.6 define("FOO", ); // nu funcționează în PHP 5.6, funcționează în PHP 7.0
Rezultatele comparației

Este aproape întotdeauna mai bine să definiți o constantă folosind define() , deoarece există mai multe posibilități și mai puține opțiuni pentru a „prinde” o eroare... Excepția este atunci când aveți versiunea PHP 5.6 și trebuie să salvați matricea ca constantă, const vă va ajuta aici.

Constantele clasei PHP

Sunt declarate numai folosind const . Regulile pentru ei sunt cele descrise mai sus: acceptă doar scalari, nu înțeleg variabile PHP, funcții, expresii...

Constantele de clasă sunt întotdeauna publice - nu există statut privat sau protejat.

Constanta declarată aparține în mod specific clasei, nu aparține niciunui obiect și este comună tuturor obiectelor (instanțelor) clasei.

Clasa My_Class ( const NAME = "VALUE"; // începând cu PHP 5.6 puteți folosi expresii matematice const SEC_PER_DAY = 60 * 60 * 24; function print_name() ( // accesând o constantă de clasă în interiorul unei metode prin self (clasa însăși) ) echo self ::NAME; ) ) // accesul la o constantă din afara clasei // poate fi apelat din sfera globală fără a inițializa o instanță de clasă echo My_Class::NAME;

Constantele clasei sunt foarte asemănătoare cu proprietățile clasei statice.

Clasa Clasa_Mea ( const NUME = "VALOARE"; static $nume = "VALOARE";; ) echo Clasa_Mea::NUME; echo Clasa_Mea::$nume;

Constante „magice”.

Și în concluzie, să ne amintim despre constantele speciale PHP...

PHP are nouă constante magice care își schimbă sensul în funcție de contextul în care sunt utilizate. De exemplu, valoarea lui __LINE__ depinde de linia din script pe care este specificată această constantă. Toate constantele „magice” sunt rezolvate în timpul compilării, spre deosebire de constantele obișnuite, care sunt rezolvate în timpul execuției. Constantele speciale nu fac distincție între majuscule și minuscule și sunt enumerate mai jos:

Constant Descriere
__LINIA__ Numărul liniei curente din fișier.
__FIŞIER__ Calea completă și numele fișierului curent în care este apelată constanta.
__DIR__ PHP 5.3.0. Directorul fișierului în care este utilizată constanta. La fel ca dirname(__FILE__) . Nu are o bară oblică finală, cu excepția directorului rădăcină.
__FUNCŢIE__ Numele funcției.
__CLASĂ__ Numele clasei. Acest nume conține numele spațiului de nume în care a fost declarată clasa (de exemplu, Foo\Bar). Funcționează și în trăsături. Când este folosit în metodele de trăsătură, acesta este numele clasei în care sunt utilizate aceste metode.
__TRĂSĂTURĂ__ PHP 5.4.0. Numele trăsăturii. Acest nume conține numele spațiului de nume în care a fost declarată trăsătura (de exemplu, Foo\Bar).
__METODĂ__ Numele metodei clasei.
__NAMESPACE__ PHP 5.3.0. Numele spațiului de nume curent.
ClassName::class PHP 5.5.0. Numele complet al clasei (inclusiv spațiul de nume). Vezi și::class.

Verificarea existentei constantelor

Constante în PHP

O constantă este o valoare numită care nu se modifică în timpul execuției programului.

Spre deosebire de o variabilă, nu puteți modifica valoarea unei constante care i-a fost atribuită atunci când a fost declarată. Constantele sunt utile pentru stocarea valorilor care nu ar trebui să se schimbe în timp ce programul rulează. Constantele pot conține numai date scalare (boolean, întreg, float și șir).

În PHP, constantele sunt definite de funcție defini() . Această funcție are următorul format:

defini ($nume, $valoare, $case_sen), Unde:

$nume- denumirea constantei;
$valoare- valoarea constantei;
$case_sen- parametru opțional de tip logic,
indicând dacă literele trebuie să fie sensibile la majuscule (adevărat) sau nu (fals).

Un exemplu de definire și utilizare a constantelor în PHP:

define("pi",3.14,true);
echo pi;
// Ieșiri 3.14
?>

Dacă parametrul $case_sen egală Adevărat, atunci interpretul va ține cont de cazul caracterelor atunci când lucrează cu o constantă. Vă rugăm să rețineți că constantele sunt folosite fără semn de început $ .

Diferențele dintre constante și variabile:

· Constantele nu au prefix semnul dolarului ( $ );

Constantele pot fi definite numai folosind o funcție defini(), nu prin atribuirea unei valori;

· Constantele pot fi definite și accesate oriunde, indiferent de domeniul de aplicare;

· Constantele nu pot fi definite sau invalidate după declararea lor inițială; Și

· Constantele pot avea doar valori scalare.

Pentru a verifica existența unei constante, puteți folosi funcția definit() . Această funcție se intoarce Adevărat, dacă constanta este declarată. Iată un exemplu:

// Declarați constanta pi
define("pi",3.14,true);
if (defined("pi")==true) echo "Constanta pi a fost declarată!";
// Scriptul va tipări „Pi constant declarat!”
?>

Următoarele constante predefinite există în PHP:

PHP oferă o listă mare de constante predefinite pentru fiecare script pe care îl executați. Multe dintre aceste constante sunt definite de diverse module și vor fi prezente numai dacă acele module sunt disponibile prin încărcare dinamică sau prin asamblare statică.

Există cinci constante predefinite care își schimbă sensul în funcție de contextul în care sunt utilizate. De exemplu, constanta __LINIA__ depinde de linia din script pe care este specificată această constantă. Constantele speciale nu fac distincție între majuscule și minuscule și sunt enumerate mai jos.

În această notă vom vorbi despre constante. Ca de obicei, să ne uităm la conceptul de constante în limbajele de programare și să vedem cum sunt declarate și utilizate constante în PHP.

Conceptul de constantă și constante în PHP

Cuvântul constantă ar trebui să vă fie deja familiar din matematică:

„Constantă matematică- o cantitate a cărei valoare nu se modifică.”

Este la fel și în PHP. Constant în PHP este un identificator care servește la desemnarea unei valori simple (șir, un număr) care nu se poate modifica în timpul execuției codului.

Pentru a declara o constantă (ai atribui o valoare), utilizați funcția defini. Exemplu de declarație constantă:

Numele constante în PHP sunt sensibile la majuscule (literele mari și mici sunt diferite), așa că trebuie să fiți atenți. Există, de asemenea, o convenție conform căreia numele constante sunt întotdeauna scrise cu litere mari.

Numele constantă trebuie să înceapă cu o literă sau liniuță de subliniere „_” și poate consta din litere, cifre și liniuțe de subliniere.

Să ne uităm la un exemplu simplu de utilizare a unei constante:

În acest exemplu, am declarat o constantă și am folosit-o în program.

Pentru ce sunt folosite constantele și nu este mai ușor să folosiți variabile?

După cum sa menționat deja, constantele nu își pot schimba valorile în timpul execuției programului. Constantele stochează de obicei parametri permanenți ai site-ului, cum ar fi detaliile de acces la baza de date (gazdă, autentificare și parolă utilizator, numele bazei de date), locația site-ului pe disc și multe alte setări.

Dacă folosim variabile, atunci scriptul poate modifica accidental (în caz de eroare) valoarea variabilei și nu va funcționa așa cum ați vrut.

Utilizarea constantelor asigură că valoarea pe care o specificați atunci când declarați constanta rămâne neschimbată.

Ziua bună tuturor. Alexey Gulynin este în legătură. În ultimul articol la care ne-am uitat operator de echivalență în PHP. În acest articol aș vrea să vorbesc despre constante în PHP. La școală, ați întâlnit adesea constante, de exemplu, „numărul PI” sau din fizică constanta universală a gazelor (R). Constantele sunt definite o dată și nu se mai schimba. Același lucru se aplică constantelor din programare, adică. definim o constantă o dată și nu se schimbă niciodată în codul programului. Constantele pot fi diferite valori matematice, căi către fișiere.

Cum diferă o constantă de o variabilă:

1) Este definit o singură dată și nu poate fi atribuită o valoare în altă parte,
2) Pentru a face referire la el, nu trebuie să puneți un semn „$” în fața lui (există un minus aici - acum nu putem folosi numele constantei într-un șir de text).
Să tipărim constanta „PI”:

Există două tipuri de constante: definit de interpret și definit de utilizator:

Exemple de constante definite de interpret:

1) __FILE__ - stochează numele fișierului care conține codul care este în curs de executare,
2) PHP_VERSION - versiunea interpretului PHP,
3) PHP_OS - versiune sistem de operare, sub care rulează PHP.

Tastați următorul cod și vedeți ce alte constante există:

Vă puteți defini propriile constante, acest lucru se face folosind operatorul define. Să definim 2 constante:

"; echo Const2; ?>

În acest caz, vom afișa valorile acestor constante.

În mod implicit, numele constantă face distincție între majuscule și minuscule; poate fi dezactivat folosind al treilea parametru opțional, astfel:

"; echo nouW1; ?>

Veți vedea că totul funcționează (în exemplul anterior nu va funcționa, deoarece este sensibil la majuscule).

Fiți atenți la ghilimele în care este scris numele constantei. Aceasta este o necesitate. De asemenea, nu puteți crea constante cu aceleași nume.

În PHP puteți verifica dacă o constantă există sau nu folosind funcția definit(nume constant). Să ne uităm la un exemplu pentru a fi clar:

Tastați acest exemplu și vedeți ce se întâmplă.


O variabilă este o entitate care conține date. Dacă tipul de date este descriere generala formatul datelor stocate și modalitățile de lucru cu acestea, apoi o variabilă reprezintă un bloc specific de memorie a computerului. Acest bloc stochează valoare variabilă, și puteți accesa blocul (și valoarea) folosind numele variabilei.


În PHP, un nume de variabilă începe întotdeauna cu un semn dolar ($), care trebuie urmat de o literă, după care puteți folosi litere, cifre și un caracter de subliniere. Numele sunt sensibile la majuscule, de ex. variabilele $value, $Value, $VALUE și $ValuE sunt patru variabile DIFERITE, deși numele lor citește la fel.

Exemple de nume de variabile corecte din punct de vedere sintactic:

Exemplu de nume incorecte:

Există un lucru regula generala(pentru toate limbajele de programare) privind denumirea variabilelor. Regula este foarte simplă: numele trebuie să aibă întotdeauna sens.

Exemplu de cod slab citit

Concizia, desigur, este esența talentului, dar sacrificarea ușurinței de percepere a codului de dragul compactității sale este neînțelept. Mai mult, lungimea numelui nu afectează în niciun fel performanța scenariului. Dar nu ar trebui să mergeți la extrema opusă - dați variabile prea mult nume lungi. Dacă numele trebuie să fie format din două sau mai multe cuvinte, părți ale numelui trebuie evidențiate cu litere mari sau separate prin liniuțe de subliniere. De exemplu, numele $strusernameaddomain mult mai bine percepute în formă $str_UserNameAndDomain.

Exemplu de cod foarte lizibil

Există două tipuri de variabile: variabile regulate(variabile valorice) și variabile de referință. Diferența cheie dintre ele este modul în care procesează datele. Când atribuiți o valoare unei variabile obișnuite, valoarea atribuită este complet copiată, adică. este creată bloc nou memorie în care este plasată o copie a valorii originale. La munca in continuare toate modificările se vor reflecta pe această copie și nu pe datele originale.

Variabilele de referință funcționează diferit. Când atribuiți o valoare unei variabile de referință, nu datele sunt copiate, ci informațiile despre locul în care se află. Rezultatul este că variabila indică același bloc în care se află datele originale. Acum, dacă modificați valoarea variabilei de referință, valoarea inițială se va schimba.

Să ne uităm la un exemplu:

Transmiterea variabilelor după valoare

Există funcții speciale în PHP pentru lucrul cu variabile:

  • isset() - verifică dacă o variabilă a fost declarată și dacă valoarea acesteia este diferită de NULL;
  • empty() - analog cu isset()
  • unset() este o funcție de limbaj încorporată care elimină valoarea unei variabile și elimină variabila însăși din lista de variabile disponibile (distrugerea variabilei).

Domeniu variabil

Foarte caracteristică importantă variabilă - sfera (sfera de aplicare) a acesteia, i.e. o descriere a locului în care în program (script) valoarea acestuia poate fi citită sau modificată. Trebuie să vă amintiți întotdeauna că o variabilă declarată în interiorul unui bloc de program este vizibilă numai în cadrul acelui bloc, iar pentru a accesa o variabilă declarată în afara blocului, aceasta trebuie declarată într-un mod special.

Blocurile de program în acest caz sunt „script”, „funcție” sau „clasă”. De exemplu:

Totul pare să fie corect, dar nu funcționează. De ce? Deoarece dacă nu spuneți în mod explicit că variabila $nume din interiorul unei funcții este de fapt variabila globală $nume, atunci interpretul va crea o copie temporară a variabilei numită $nume și valoare goală. Și deoarece valoarea este goală (nedefinită), rezultatul adăugării șirurilor de caractere va fi nedefinit (gol).

Corectarea situației este foarte ușoară, doar adăugați un rând (îngroș):

global $nume; // indică în mod explicit că ar trebui // să folosim o variabilă globală.$fullName = $nume . $familie; echo "Nume în interiorul funcției: ".$fullName; ) echo „Nume ÎNAINTE de apelul funcției: „.$nume; // rezultat: "Nume ÎNAINTE de a apela funcția: Vasya" tryChengeName("Ivanov"); // rezultat: „Nume în interiorul funcției: Vasya Ivanov” echo „Nume DUPĂ apelul funcției: „.$nume; // rezultat: „Nume DUPĂ apelarea funcției: Vasya Ivanov” ?>

ÎN în acest exemplu variabila $name are un domeniu de aplicare egal cu întregul script, iar o variabilă $fullName declarată în interiorul unei funcții are un domeniu de aplicare egal cu funcția în sine. Aceasta înseamnă că atunci când funcția lor iese, variabila $fullName va fi distrusă și toate încercările de a citi valoarea acesteia vor avea ca rezultat o eroare.

Vom analiza exemple de lucru cu clase în secțiunea „Clasuri și moștenire”.

Variabile variabile

Da, da, nu există nicio eroare aici, exact asta (în două cuvinte) sunt numite unele variabile în PHP. Ideea este că partea de text a unui nume de variabilă (adică numele fără semnul dolarului) poate fi ea însăși un nume. De exemplu:

Se recomandă insistent să nu folosiți astfel de tehnici decât dacă este absolut necesar. Codul plin cu astfel de trucuri este foarte greu de întreținut. Acest lucru este deosebit de important atunci când lucrați cu datele introduse de utilizatori. Principala cauză a complexității sunt dependențele implicite. De exemplu, ce se întâmplă dacă în loc de numele „Vasya” scrieți ceva de genul """""_;%//^q""? Dreapta! În majoritatea cazurilor, scriptul nu se va putea executa! Puteți, desigur, să adăugați o grămadă de verificări pentru prezența personajelor „greșite”, dar este mai ușor să nu folosiți deloc astfel de trucuri.

constante

O constantă este o anumită valoare neschimbătoare. O constantă este declarată atât cu un nume, cât și cu o valoare. Pentru a declara o constantă, utilizați funcția defini(), și pentru a determina prezența unei constante (adică dacă a fost definită sau nu) - funcția definit(). Numele unei constante este construit după aceleași reguli ca și numele variabilelor.

Exemple de constante:

Un tip separat de constante PHP sunt așa-numitele „constante magice”. Acestea sunt constante de sistem a căror valoare este determinată și stabilită de interpret. Există câteva astfel de constante:

  • __LINE__ Conține numărul linia curentăîn dosarul curent.
  • __FILE__ Conține numele complet al fișierului curent
  • __FUNCTION__ Conține numele funcției curente.
  • __CLASS__ Conține numele clasei curente.
  • __METHOD__ Conține numele metodei curente a clasei curente.

Aceste constante sunt foarte convenabile pentru depanare, dar în toate celelalte cazuri este mai bine să nu le folosiți, înlocuindu-le cu apeluri la funcțiile corespunzătoare.