12. Variabile predefinite
Scris: Vin Dec 06, 2024 2:12 pm
Superglobals, variabile speciale
PHP dispune de cateva variabile implicite. Acestea sunt pre-populate de PHP in momentul executiei, deci nu trebuie definite sau initializate. Sunt disponibile in orice portiune a codului si in orice script PHP si pot fi folosite fara sa fie nevoie de alte pregatiri. Anumite variabile (ca de exemplu $_POST) au valori doar in anumite situatii (spre exemplu, doar atunci cand sunt folosite formulare).
Mai jos sunt descrise pe scurt aceste variabile, cu mentiunea ca in lectiile urmatoare vor fi folosite in exemple din care veti intelege (usor) rostul lor.
$_GET
Vector asociativ ce contine parametrii transmisi prin URL sau printr-un formular. De exemplu, daca pagina noastra PHP se numeste test.php, un URL de genul
http://localhost/test.php?nume=Alex&varsta=12&ocupatie=elev
ar popula variabila $_GET cu urmatoarele valori:
Testeaza
print_r( $_GET ); /* afiseaza: Array ( [nume] => Alex [varsta] => 12 [ocupatie] => elev ) */ Nota: numele parametrilor au rol de cheie in vectorul $_GET.
Vectorul $_GET este de asemenea populat la folosirea formularelor GET.
$_POST
Similar cu $_GET, doar ca parametrii sunt transmisi prin formulare (forms) - vezi lectia Formulare pentru detalii.
$_REQUEST
Inglobeaza atat $_GET cat si $_POST.
$_SESSION
Folosita pentru a defini date ce sunt disponibile atata timp cat utilizatorul acceseaza site-ul, indiferent de paginile vizualizate. In mod normal o variabila este definita doar cand un utilizator cere o pagina. La finalul executiei scriptului, valorile variabilelor se pierd (inclusiv variabile $_GET, $_POST, etc). Daca sunt puse in vectorul $_SESSION, valorile pot persista si dupa terminarea executiei scripturilor. Vezi lectia Sesiuni pentru detalii.
$_SERVER
Furnizeaza informatii despre server, pagina ceruta si utilizatorul care acceseaza pagina.
Testeaza
print_r( $_SERVER );
$_ENV
Afiseaza informatii despre mediul curent in care este instalat si ruleaza interpretorul PHP, despre scriptul curent, etc
$_COOKIE
Folosita pentru a vedea elementele de tip Cookies de la site-ul/pagina curenta, disponibile pe calculatorul utilizatorilor - vezi lectia Cookies pentru detalii.
$_FILES
Folosita la incarcarea fisierelor pe server (file uploads) - vezi lectia File upload pentru mai multe detalii
Desi toate aceste variabile au si nume alternative, este recomandat sa se foloseasca in forma in care au fost prezentate mai sus.
---------------------------
Constante predefinite
In PHP exista o serie de constante ce pot fi folosite in orice moment. Ca si in cazul vectorilor superglobali, acestea sunt populate de catre interpretorul PHP si sunt disponibile in toate fisierele sursa.
PHP_EOL - contine caracterul new-line ce poate fi afisat pentru a formata rezultatul unui script pe mai multe linii. echo "Linia 1", PHP_EOL, "Linia 2"; // alternativ se poate folosi \n, desi cele 2 nu sunt mereu echivalente echo "Linia 1", "\n", "Linia 2";
TRUE, FALSE - constantele de tip boolean ce pot fi folosite la testele din instructiunea if
NULL - referinta nula, utila in "stergerea" unei variabile
PHP_OS - contine identificatorul sistemului de operare pe care ruleaza interpretorul PHP
PHP_VERSION - contine versiunea completa a interpretorului
DEFAULT_INCLUDE_PATH - contine locatiile unde sunt cautate scripturile atunci cand sunt incluse cu include sau require; de obicei, aceasta constanta contine directorul curent si alte cateva locatii
E_ERROR, E_WARNING si altele - contin codurile diverselor tipuri de erori ce pot sa apara
Exista si alte constante in distributia de baza a PHP, plus multe altele, definite cu fiecare extensie incarcata, dar nu sunt atat de uzuale ca acestea.
--------------------------------
Constante magice
Limbajul PHP dispune de o serie de expresii numite "constante magice" care au valori diferite in functie de anumiti parametri (cum ar fi momentul si codul-sursa in care sunt folosite). Denumirea de 'constanta' este improprie, pentru ca, asa cum stiti deja, o constanta nu-si poate schimba valoarea. Nici 'variabile' nu pot fi numite deoarece nu au nevoie de declarare sau initializare, asa ca s-a recurs la un compromis: denumirea 'constante magice' (magic constants).
Cele mai uzuale sunt __LINE__, __FILE__, __FUNCTION__ si __CLASS__. Mai noile __DIR__, __METHOD__, __NAMESPACE__ sau __TRAIT__ sunt mai rar folosite datorita faptului ca au nevoie de o versiune mai noua a interpretorului PHP (cel putin versiunea 5.0 sau chiar 5.4)
Mai jos sunt explicate aceste constante.
LINE
Returneaza linia curenta a scriptului PHP.
Testeaza
FILE
Contine calea completa catre scriptul PHP care se executa. Daca este folosita intr-un fisier inclus atunci numele acestui fisier este returnat.
Testeaza
FUNCTION
Returneaza numele functie din interiorul careia se foloseste constanta.
Testeaza
CLASS
Returneaza numele clasei curente.
DIR
Contine numele directorului in case este salvat scriptul curent. Aceasta constanta este echivalenta cu dirname(__FILE__).
METHOD
Contine numele metodei de clasa din care se foloseste constanta. Se poate folosi numai cu clase.
NAMESPACE
Contine numele spatiului de lucru curent (name-space).
TRAIT
Contine numele trasaturii curente (trait).
PHP dispune de cateva variabile implicite. Acestea sunt pre-populate de PHP in momentul executiei, deci nu trebuie definite sau initializate. Sunt disponibile in orice portiune a codului si in orice script PHP si pot fi folosite fara sa fie nevoie de alte pregatiri. Anumite variabile (ca de exemplu $_POST) au valori doar in anumite situatii (spre exemplu, doar atunci cand sunt folosite formulare).
Mai jos sunt descrise pe scurt aceste variabile, cu mentiunea ca in lectiile urmatoare vor fi folosite in exemple din care veti intelege (usor) rostul lor.
$_GET
Vector asociativ ce contine parametrii transmisi prin URL sau printr-un formular. De exemplu, daca pagina noastra PHP se numeste test.php, un URL de genul
http://localhost/test.php?nume=Alex&varsta=12&ocupatie=elev
ar popula variabila $_GET cu urmatoarele valori:
Testeaza
print_r( $_GET ); /* afiseaza: Array ( [nume] => Alex [varsta] => 12 [ocupatie] => elev ) */ Nota: numele parametrilor au rol de cheie in vectorul $_GET.
Vectorul $_GET este de asemenea populat la folosirea formularelor GET.
$_POST
Similar cu $_GET, doar ca parametrii sunt transmisi prin formulare (forms) - vezi lectia Formulare pentru detalii.
$_REQUEST
Inglobeaza atat $_GET cat si $_POST.
$_SESSION
Folosita pentru a defini date ce sunt disponibile atata timp cat utilizatorul acceseaza site-ul, indiferent de paginile vizualizate. In mod normal o variabila este definita doar cand un utilizator cere o pagina. La finalul executiei scriptului, valorile variabilelor se pierd (inclusiv variabile $_GET, $_POST, etc). Daca sunt puse in vectorul $_SESSION, valorile pot persista si dupa terminarea executiei scripturilor. Vezi lectia Sesiuni pentru detalii.
$_SERVER
Furnizeaza informatii despre server, pagina ceruta si utilizatorul care acceseaza pagina.
Testeaza
print_r( $_SERVER );
Cod: Selectaţi tot
/* afiseaza ceva asemanator cu ce e mai jos:
Array
(
[REDIRECT_STATUS] => 200
[HTTP_VIA] =>
[HTTP_COOKIE] =>
[HTTP_REFERER] => http://php.punctsivirgula.ro/
[HTTP_USER_AGENT] => Mozilla/5.0 ...
[HTTP_HOST] => php.punctsivirgula.ro
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[HTTP_ACCEPT_LANGUAGE] => ro-ro,ro;q=0.8,en-us;q=0.6,en-gb;q=0.4,en;q=0.2
[HTTP_ACCEPT_CHARSET] => UTF-8,*
[HTTP_KEEP_ALIVE] => 300
[HTTP_CACHE_CONTROL] => max-age=0, max-age=0
[HTTP_CONNECTION] => Keep-Alive
[PATH] => /bin:...:/usr/bin:/bin
[SERVER_SIGNATURE] => Apache/2.2.9 (Unix) ... at php.punctsivirgula.ro Port 80
[SERVER_SOFTWARE] => Apache/2.2.9 (Unix) ...
[SERVER_NAME] => php.punctsivirgula.ro
[SERVER_ADDR] => 89.xx.xx.xx
[SERVER_PORT] => 80
[REMOTE_ADDR] => 69.xx.xx.xx
[DOCUMENT_ROOT] => /.../
[SERVER_ADMIN] => webmaster@...
[SCRIPT_FILENAME] => /.../index.php
[REMOTE_PORT] => 35423
[REDIRECT_QUERY_STRING] =>
[REDIRECT_URL] => /arrays/
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /arrays/
[SCRIPT_NAME] => /index.php
[PHP_SELF] => /index.php
[REQUEST_TIME] => 1250589158
[argv] => Array()
[argc] => 0
)
*/
Afiseaza informatii despre mediul curent in care este instalat si ruleaza interpretorul PHP, despre scriptul curent, etc
$_COOKIE
Folosita pentru a vedea elementele de tip Cookies de la site-ul/pagina curenta, disponibile pe calculatorul utilizatorilor - vezi lectia Cookies pentru detalii.
$_FILES
Folosita la incarcarea fisierelor pe server (file uploads) - vezi lectia File upload pentru mai multe detalii
Desi toate aceste variabile au si nume alternative, este recomandat sa se foloseasca in forma in care au fost prezentate mai sus.
---------------------------
Constante predefinite
In PHP exista o serie de constante ce pot fi folosite in orice moment. Ca si in cazul vectorilor superglobali, acestea sunt populate de catre interpretorul PHP si sunt disponibile in toate fisierele sursa.
PHP_EOL - contine caracterul new-line ce poate fi afisat pentru a formata rezultatul unui script pe mai multe linii. echo "Linia 1", PHP_EOL, "Linia 2"; // alternativ se poate folosi \n, desi cele 2 nu sunt mereu echivalente echo "Linia 1", "\n", "Linia 2";
TRUE, FALSE - constantele de tip boolean ce pot fi folosite la testele din instructiunea if
NULL - referinta nula, utila in "stergerea" unei variabile
PHP_OS - contine identificatorul sistemului de operare pe care ruleaza interpretorul PHP
PHP_VERSION - contine versiunea completa a interpretorului
DEFAULT_INCLUDE_PATH - contine locatiile unde sunt cautate scripturile atunci cand sunt incluse cu include sau require; de obicei, aceasta constanta contine directorul curent si alte cateva locatii
E_ERROR, E_WARNING si altele - contin codurile diverselor tipuri de erori ce pot sa apara
Exista si alte constante in distributia de baza a PHP, plus multe altele, definite cu fiecare extensie incarcata, dar nu sunt atat de uzuale ca acestea.
--------------------------------
Constante magice
Limbajul PHP dispune de o serie de expresii numite "constante magice" care au valori diferite in functie de anumiti parametri (cum ar fi momentul si codul-sursa in care sunt folosite). Denumirea de 'constanta' este improprie, pentru ca, asa cum stiti deja, o constanta nu-si poate schimba valoarea. Nici 'variabile' nu pot fi numite deoarece nu au nevoie de declarare sau initializare, asa ca s-a recurs la un compromis: denumirea 'constante magice' (magic constants).
Cele mai uzuale sunt __LINE__, __FILE__, __FUNCTION__ si __CLASS__. Mai noile __DIR__, __METHOD__, __NAMESPACE__ sau __TRAIT__ sunt mai rar folosite datorita faptului ca au nevoie de o versiune mai noua a interpretorului PHP (cel putin versiunea 5.0 sau chiar 5.4)
Mai jos sunt explicate aceste constante.
LINE
Returneaza linia curenta a scriptului PHP.
Testeaza
FILE
Contine calea completa catre scriptul PHP care se executa. Daca este folosita intr-un fisier inclus atunci numele acestui fisier este returnat.
Testeaza
FUNCTION
Returneaza numele functie din interiorul careia se foloseste constanta.
Testeaza
CLASS
Returneaza numele clasei curente.
DIR
Contine numele directorului in case este salvat scriptul curent. Aceasta constanta este echivalenta cu dirname(__FILE__).
METHOD
Contine numele metodei de clasa din care se foloseste constanta. Se poate folosi numai cu clase.
NAMESPACE
Contine numele spatiului de lucru curent (name-space).
TRAIT
Contine numele trasaturii curente (trait).