Invata PHP cu punctsivirgula.ro

I. Introducere
II. Notiuni de baza
III. Notiuni avansate
IV. Aplicatii
V. Extra
C O N T I N U T
Variabile predefinite

Superglobals, variabile speciale    3 ! 

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:
    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.
    print_r( $_SERVER );
    /* 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
    )
    */
    
  • $_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.

Popescu Catalin a spus Prea complicat - 19.03.2009

Am facut doar o pagina test.php, invatata la notiuni de baza, restul a devenit de neinteles pe parcurs. Consider ca acest curs nu este totusi pt incepatori, deoarece nu toate informatiile sunt dedicate unor persoane care o iau de la o. Deci, acest curs este foarte putin explicat si prea pe scurt.!

Popescu Catalin a spus Admin - 19.03.2009

Eu ca si majoritatea programatorilor incepatori care stiu html si vor sa treaca la alt nivel vreau sa stiu doar atat:
Daca am spre exemplu un site in html de stiri , si nu vreau sa mai stau sa bag in fiecare zi cate o stire(o poza si un text) in html, vrea sa imi fac un panou de admin si sa introduc de acolo noile stiri. Scurt si la obiect. In acest curs momentan nu am reusit sa desprind mare lucru.

Alexandru a spus Tranzitia de la HTML la PHP - 20.03.2009

Salut. Hai sa o luam in ordinea problemelor puse de tine:

1. Prea complicat.
Incarcam sa oferim explicatii cat de detaliate putem dar in acelasi timp ne ferim sa cadem in extrema cealalta cand prea multe detalii indeparteaza cititorul de la ideea de baza. Daca unele lucruri sunt explicate prea pe scurt, lucrul asta este facut din 2 motive:
- acel aspect este detaliat mai tarziu (printr-un exemplu sau prin alte explicatii)
- indemnam cititorul sa caute singur mai multa informatie, dezvoltand acel spirit de a cauta informatiile nu de a le cere (daca ai observat, toate instructiunile de PHP au un link catre manualul oficial - acolo gasesti explicatii detaliate si multe alte exemple legate de instructiunea respectiva)

Pe de alta parte, in pagina de prezentare (http://php.punctsivirgula.ro/?despre) sunt cateva intrebari comune si raspunsurile aferente in care sunt precizate putinele conditii pentru a putea folosi (cu succes) acest site. Citeste-le bine si vezi daca "te incadrezi".

Daca totusi consideri ca ar trebui ca o anumita parte din site sa fie explicata mai pe larg (si crezi ca si altii ar beneficia de asta), atunci poti sa trimiti pe email (sau intr-un alt comentariu) care este pagina/sectiunea in cauza si noi vom vedea ce e de facut.

2. Admin
Trecerea de la HTML la PHP nu este chiar atat de usoara cum pare la prima vedere. Asta din cauza ca PHP este un limbaj de *programare* pe cand HTML este doar un limbaj de *marcare* (mark-up language). Adica HTML este folosit pentru a afisa informatie, ce cand PHP o "proceseaza".

Lectiile de pe site sunt grupate pe anumite categorii si cresc gradual in dificultate. N-o sa reuseasca nimeni sa invete din prima zi sa faca o interfata de aministrare ca cea descrisa de tine (poate reusi daca foloseste un cod existent - dar in acest caz nu intelege mare lucru ce se intampla). Scopul acestui site este sa ofere cunostintele de baza care sunt vitale in programarea PHP - cunostinte pe care cititorii le pot pune singuri in practica.

Pe langa asta, pe parcurs ce lectii noi sunt adaugate pe site, veti gasi si exemple noi care pot oferi o idee despre cum trebuie facute anumite lucruri (cum ar fi interfata de admin)

Sper ca aceste explicatii aditionale sa-ti fie de folos. Ca idee generala, site-ul nu este complet inca, ceea ce inseamna ca alte exemple vor fi adaugate in viitor (iar un model de CMS este pe lista)

Numai bine!


Adauga un comentariu la aceasta sectiune.

 


Constante predefinite    1 ! 

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.

Claudiu a spus PHP_EOL - 09.04.2015

Salutare, m-am apucat recent sa invat PHP online (si faceti o treaba buna), dar PHP_EOL la mine nu merge. La fel si in cazul "n".
Doar <br> functioneaza...


Adauga un comentariu la aceasta sectiune.

 


Constante magice    0 ! 

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.
    <?php
    # afiseaza numarul liniei pe care este scrisa instructiunea echo
    echo __LINE__; // 187
    ?>
  • FILE
    Contine calea completa catre scriptul PHP care se executa. Daca este folosita intr-un fisier inclus atunci numele acestui fisier este returnat.
    <?php
    # afiseaza numele fisierului executat
    echo __FILE__; // numescript.php
    ?>
  • FUNCTION
    Returneaza numele functie din interiorul careia se foloseste constanta.
    <?php
    # declar o functie care contine o constanta magica
    function spuneNumele() {
    	echo __FUNCTION__;
    }
     
    # apelez functia care va afisa valoarea constantei
    spuneNumele(); // va afisa: spuneNumele
    ?>
  • 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).

Nimic de afisat.


Adauga un comentariu la aceasta sectiune.