Lector univ. dr. Adrian Runceanu
Tehnologii Web
1
Universitatea “Constantin Brâncuşi” din Târgu-JiuFacultatea de Inginerie
Departamentul de Automatică, Energie şi Mediu
Curs 7
1. Elemente de bază ale limbajului PHP
2. Tipuri de date
3. Variabile. Constante. Operatori
Tehnologii WEB - curs
3
1. Elemente de bază ale limbajului PHP
Sintagma tehnologii pentru server se referă în special la serverele de aplicaţii utilizate în scopul furnizării de conţinut dinamic în Web.
Dintre acestea, PHP (acronim recursiv pentru PHP: Hypertext Preprocessor), realizat şi distribuit în regim open source, este cel mai des folosit.
Tehnologii WEB - curs
4
Prin PHP se înţelege atât limbajul de scripting, cât şi serverul de aplicaţii, cel din urmă având rolul de a procesa şi interpreta scripturile scrise utilizând acest limbaj.
Limbajul PHP este destinat în mod special pentru dezvoltare Web, codul PHP putând fi încapsulat în (X)HTML.
În ceea ce priveşte popularitatea printre limbajele de programare, PHP ocupă poziţia a treia, după C/C++ şi Java.
Tehnologii WEB - curs
5
Spre deosebire de programele scrise intr-unul dintre limbajele pentru client (JavaScript), codul PHP este interpretat pe server, utilizatorul primind - prin intermediul browserului Web - numai rezultatul obtinut, in diverse formate (XHTML).
Tehnologii WEB - curs
7
Caracteristici (I)
Dintre caracteristicile generale ale limbajului / serverului de aplicatii PHP care il recomanda drept cel mai indicat pentru dezvoltarea aplicatiilor Web, pot fi mentionate urmatoarele:
este usor de invatat si utilizat
ofera functionalitati complete
Tehnologii WEB - curs
8
Caracteristici(II)
este simplu de extins, diverse module si biblioteci oferind posibilitatea ca PHP sa lucreze cu un numar mare de API-uri si alte tehnologii Web;
au fost create un numar mare de medii de dezvoltare profesionale scrise în PHP, multe dintre ele fiind puse la dispozitia utilizatorului in regim open source.
Tehnologii WEB - curs
9
Caracteristici(III)
dispune de interfete pentru un numar mare de sisteme de gestiune a bazelor de date:
Oracle
Microsoft SQL Server
IBM DB2
MySQL
Postgresql
Informix
Sybase
precum si pentru standardul ODBC
Tehnologii WEB - curs
10
Caracteristici(IV)
asigura suport pentru comunicatia cu servicii ce utilizeaza diverse protocoale, dintre care amintim:
HTTP
FTP (File Transfer Protocol)
IMAP (Internet Message Access Protocol)
POPS (Post Office Protocol version 3)
COM (Component Object Model)
LDAP (Lightweight Directory Access Protocol)
SOAP (Simple Object Access Protocol)
Tehnologii WEB - curs
11
Caracteristici(V)
ofera suport pentru prelucrarea textului folosind expresii regulate
implementeaza diverse metode de procesare a documentelor XML:
SAX - Simple API for XML
DOM - Document Object Model
XMLReader
SimpleXML
oferind si posibilitatea transformarii acestora prin intermediul foilor de stil XSLT (XSL Transformations)
Tehnologii WEB - curs
12
Caracteristici(VI)
asigura suport pentru:
generarea si prelucrarea imaginilor
gestiunea sesiunilor (folosind variabile cookie si, respectiv, variabile sesiune)
instantierea obiectelor Java si utilizarea lor in mod transparent ca obiecte PHP
comert electronic
crearea animatiilor FLASH
etc.
Tehnologii WEB - curs
13
• De obicei, PHP este folosit ca modul inclus in procesul-server HTTP, iar in cazul in care serverul amintit suporta standardul CGI (Common Gateway Interface ), poate fi utilizat si ca procesor CGI.
• Atunci cand browserul cere un fisier PHP serverului Web, acesta trimite cererea procesorului PHP, care efectueaza interpretarea scriptului si produce la iesirea standard continut in diverse formate:
• precum sunt cele textuale (XHTML, XML)
• grafice (GIF, JPEG, PNG)
• sau PDF
Tehnologii WEB - curs
14
Secventele de cod PHP sunt delimitate de un marcaj de start si de un marcaj de sfarsit (acestea sunt, in mod obisnuit, <?php si ?>), care determina intrarea/iesirea procesorului in/din ,,modul PHP".
Tehnologii WEB - curs
15
Informatii utile
Se pot obtine despre serverul de aplicatii PHP 5, extensiile instalate in sistem odata cu acesta, prin intermediul functiei phpinfo().
Tehnologii WEB - curs
16
Exemplu 1: Script-ul urmator afiseaza un mesaj. Va fi memorat sub numele de prim.php.
<?php
echo “primul script PHP”;
?>
Tehnologii WEB - curs
17
Observatie foarte importanta!
Atunci cand se apeleaza un script, el este rulat pe server.
Acesta va efectua operatiile pe care le are programate si eventual, va scrie ceva (in exemplul anterior cu “echo”).
Rezultatul (adica ce este scris) este returnat catre browser, iar acesta il va trata ca pe un fisier html.
Tehnologii WEB - curs
18
Tehnologii WEB - curs
19
Exemplu 2:
Executam script-ul urmator care contine catevaelemente de formatare.
<?php
echo “Acesta este <b>primul</b> script <b><i>PHP</i></b>”;
?>
Vocabular, simboluri, expresii, instructiuni si comentarii
Sintaxa unui limbaj reprezinta totalitatea regulilor de scriere a programelor, astfel incat acestea sa fie acceptate de catre analizorul sintactic (numit si parser).
Aceste reguli se refera la: vocabularul simbolurile expresiile si instructiunile folosite modalitatile utilizate pentru definirea functiilor si claselor
O parte dintre elementele de sintaxa enumerate, referitoare la limbajul de programare PHP sunt analizate in continuare.
Tehnologii WEB - curs
20
Vocabular
• Limbajul PHP foloseste un vocabular format din urmatoarele componente:
1. caractere
2. identificatori
3. separatori
1. Caracterele utilizate sunt incluse in setul de caractere al limbajului, acesta continand:
• literele majuscule si minuscule ale alfabetului (a-z, A-Z)
• cifrele corespunzatoare sistemului de numeratie zecimal (0-9)
• caractere speciale: !, @, #, $, &, *,(,), -, _, :, ", ', {, }, [, ] si spatiu
Tehnologii WEB - curs
21
2. Identificatorii furnizeaza modalitati de denumire a datelor (adica, variabile si constante), functiilor, claselor, cuvintelor-cheie etc., fiind formati din urmatoarele caractere:
• cifre
• litere
• caracterul special liniuta de subliniere (underscore: „_")
• Ca o regula generala, un identificator va incepe intotdeauna cu o litera sau cu liniuta de subliniere.
Tehnologii WEB - curs
22
3. Separatorii delimiteaza intre ei identificatorii si pot fi:
• spatiul (blank)
• caracterul punct si virgula („;")
• virgula („,")
Tehnologii WEB - curs
23
• Cele mai mici constructii sintactice pe care le poate ,,intelege" interpretorul PHP sunt denumite simboluri (tokens, in limba engleza).
Acestea sunt reprezentate de:
• numere (0.753, 45, 8.56)
• siruri ("student")
• variabile ($student)
• constante (true, false)
• cuvinte-cheie (if, for, do, while, function, class, this, public, protected, private, static, abstract)
• Simbolurile sunt separate unele de altele prin spatii albe si prin unele caractere speciale (paranteze, acolade).
Tehnologii WEB - curs
24
Expresii
•Practic tot ceea ce se scrie in PHPreprezinta expresii.
•Astfel, se spune ca PHP este un limbaj orientat pe expresii.
•O expresie este orice combinatie de simboluri care are o valoare.
Tehnologii WEB - curs
25
• Cele mai simple expresii sunt constantele si variabilele.
• Cand se scrie $x=20, se atribuie variabilei $x valoarea '20'.
• In acest caz, '20' are valoarea 20 - adica '20' este o expresie avand valoarea 20 (in acest caz, 20 este o constanta intreaga).
• In exemplul prezentat, se atribuie variabilei $x valoarea 20.
• Astfel, $x este o expresie care - dupa atribuire - va avea valoarea 20.
Tehnologii WEB - curs
26
• In general, o expresie de atribuire este o expresie in care valoarea unei variabile este rezultatul obtinut in urma evaluarii unei alte expresii.
• In exemplul urmator, variabilei $douazeci îi este atribuita valoarea obtinuta in urma evaluarii expresiei : 2* (9+1):
$douazeci = 2*(9+1)
Tehnologii WEB - curs
27
• De multe ori, expresia evaluata in vederea atribuirii valorii sale unei variabile, poate contine, la randul ei, alte variabile sau constante.
• In aceasta situatie, valoarea unei variabile continute este egala cu cea atribuita anterior, ca in exemplul urmator in care valoarea variabilei $douazeci este egala cu 20:
$saizeci=10+2*($douazeci+5)
Tehnologii WEB - curs
28
Instructiuni• In PHP, instructiunea este o expresie urmata de caracterul punct si virgula („;"), ca in C, Perl sau Java.
• O secventa de instructiuni valide, inclusa, de exemplu, intre marcajele <?php si ?> este un program (numit si script).
• In mod obisnuit scripturile PHP se salveaza in fisiere cu extensia .php.
Tehnologii WEB - curs
29
Desi instructiunile nu pot fi combinate ca si expresiile, ele pot fi incluse in grupuri, plasate intre acolade, ca in exemplul urmator:
<?php
$numar=20;
if ($numar>=0) {
echo "Radacina patrata a numarului $numar este:";
echo sqrt($numar); }
else
echo "Numarul este negativ. Precizati unul pozitiv!";
?>
Tehnologii WEB - curs
30
Comentarii(I)
Ca si in alte limbaje de programare, scripturile PHP poate include comentarii, acestea fiind precizate in trei moduri:
1. in stilul Perl - comentariul se intinde pe o linie, fiind precedat de caracterul # (cu toate ca este valid, acest tip de comentariu este mai putin utilizat in PHP);
Tehnologii WEB - curs
31
Comentarii(II)
2. in stilul JavaScript - comentariul se intinde pe o singura linie si este precedat de doua caractere slash succesive (//);
3. in stilul C - comentariul se poate intinde pe mai multe linii, fiind incadrat de secventele /* si */.
Comentariile din scripturi sunt ignorate de procesorul PHP, nefiind incluse rezultatul trimis browserului.
Tehnologii WEB - curs
32
Curs 7
1. Elemente de bază ale limbajului PHP
2. Tipuri de date
3. Variabile. Constante. Operatori
Tehnologii WEB - curs
33
2. Tipuri de date
• Limbajul PHP accepta opt tipuri de date, patru fiind scalare, doua compuse si alte doua speciale.
• Tipurile scalare sunt:
1. logic (numit si boolean)
2. sir de caractere (string)
3. intreg (integer)
4. dublu (double)
Ultimele doua reprezinta tipuri numerice.
Tehnologii WEB - curs
34
• Tipurile compuse sunt:
1. tablou (array)
2. obiect (object)
• Tipurile speciale sunt:
1. resursa (resource)
2. null
• Tipurile scalare impreuna cu tipul null se numesc tipuri simple.
• Tipurile compuse pot impacheta un numar arbitrar de date, acestea din urma avand diverse tipuri (simple sau compuse).
Tehnologii WEB - curs
35
1. Tipul întreg
• Tipul intreg se refera la numerele intregi, negative sau pozitive (corespunde tipului long din C).
• Acestea pot fi specificate in trei formate de citire, care corespund sistemelor de numeratie octal, zecimal si hexazecimal.
• Formatul zecimal este implicit, iar cele octal si hexazecimal sunt precizate utilizand ca prefix cifra 0 (zero) si respectiv, secventa Ox (zero urmat imediat de litera x).
Tehnologii WEB - curs
36
1. Tipul întreg
• Orice format poate fi precedat de semnul -(minus), care arata ca numarul corespunzator este negativ.
• Intervalul in care pot fi specificate numerele intregi in PHP depinde de - lungimea cuvantului pe masina utilizata.
• Pentru cele mai multe platforme, limitele minima si maxima sunt:
-(231-1) (-2147483647)
si, respectiv, (231-1) (2147483647).
Tehnologii WEB - curs
37
2. Tipul dublu(I)
•Tipul dublu se refera la numerele in virgula mobila.
•Formatul de citire pentru aceste numere este -A.B, unde semnul optional - (minus) corespunde numerelor negative, iar A si B sunt secvente de cifre situate in intervalul [0,9].
Tehnologii WEB - curs
38
2. Tipul dublu(II)
• Secventa A poate fi omisa daca numerele sunt cuprinse intre -1.0 si 1.0 (-0.6518, 0.6518).
• Numerele duble pot fi specificate utilizand si notatia stiintifica, adica adaugand formatului anterior litera e urmata de un intreg, care semnifica o putere a numarului 10 (numarul 2500.00 se poate scrie 2.5e+3).
Tehnologii WEB - curs
39
3. Tipul logic(I)• Tipului logic (sau boolean) îi corespund valorile true si false.
• Acestea pot fi utilizate, de exemplu, in instructiunile de control (if) pentru a specifica valoarea de adevar a expresiei de test.
• Pentru a evalua valoarea de adevar a unei expresii care nu are tipul logic, se impun urmatoarele reguli:
• daca valoarea expresiei este un numar, atunci 0 va fi asimilat valorii false.
• In caz contrar, numarul va fi asimilat valorii true;
• daca valoarea expresiei este un sir, acesta va fi asimilat valorii false in cazul in care este vid (adică, nu contine nici un caracter) si true, in caz contrar;
Tehnologii WEB - curs
40
3. Tipul logic(II)
• valoarea null va fi asimilata intotdeauna valorii false;
• daca tipul valorii expresiei este compus (adică, tablou sau obiect), aceasta va fi asimilata valorii false daca nu contine nici o valoare si true in caz contrar (a nu contine nici o valoare inseamna pentru tipul tablou a nu avea nici un element, iar pentru tipul obiect a nu include nici o proprietate cu o valoare atribuita);
• daca valorile de tip resursa sunt valide, vor fi asimilate valorii true.
Tehnologii WEB - curs
41
4. Tipul şir de caractere(I)
• Tipul sir de caractere reprezinta secvente de caractere.
• Un sir trebuie inclus între ghilimele sau apostrofuri.
• Diferenta dintre aceste modalitati de includere se manifesta in momentul procesarii.
Tehnologii WEB - curs
42
4. Tipul şir de caractere(II)
• Astfel, daca se utilizeaza apostrofuri, sirul este tratat literal, in cele mai multe cazuri (pentru exceptii, vezi primele doua reguli prezentate in continuare), in vreme ce, daca se utilizeaza ghilimele, variabilele incluse in sir vor fi - in prealabil - evaluate, ca in exemplul urmator:
<?php
$limbaj="PHP";
echo "Limbajul meu preferat este $limbaj<br />"; // Se afiseaza Limbajul meu preferat este PHP
echo 'Limbajul meu preferat este $limbaj';// Se afiseaza Limbajul meu preferat este $limbaj
?>
Tehnologii WEB - curs
43
5. Tipul resursă(I)
• Tipul resursa este un tip special de date, fiind asociat rezultatelor intoarse de unele functii definite de cateva extensii PHP.
• De exemplu, in cazul extensiei mysql, aceste functii pot realiza operatii ca:
• deschiderea fisierelor
• deschiderea conexiunii cu un server de baze de date
• interogarea bazelor de date
Tehnologii WEB - curs
44
5. Tipul resursă(II)
•Variabilele avand tipul resursa pot fi transmise unor functii, in scopul prelucrarii rezultatelor asociate acestora, dupa cum vom studia la sistemul de gestiune a bazelor de date mysql.
Tehnologii WEB - curs
45
Curs 7
1. Elemente de bază ale limbajului PHP
2. Tipuri de date
3. Variabile. Constante. Operatori
Tehnologii WEB - curs
46
3. Variabile(I)• Principala modalitate de stocare temporara a datelor într-un script PHP este - reprezentata de utilizarea variabilelor.
• In alcatuirea si utilizarea acestora trebuie respectate urmatoarele reguli:
• sunt precedate intotdeauna de simbolul dolarului ($)• numele lor incepe cu o litera sau cu caracterul
underscore, pot contine oricate caractere alfanumerice si liniute de subliniere si sunt case sensitive, adica sensibile la diferenta dintre minuscule si majuscule (exemplu, $ovariabila si $OVariaBILa sunt variabile diferite)
Tehnologii WEB - curs
47
3. Variabile(II)
• Spre deosebire de alte limbaje (C, C++, Java), nu este obligatorie declararea variabilelor PHPinainte de atribuire.
• Altfel spus, primul pas in utilizarea unei variabile PHP este atribuirea unei valori;
• valoarea unei variabile este rezultatul celei mai recente atribuiri;
Tehnologii WEB - curs
48
• tipul unei variabile este tipul valorii cel mai recent atribuite (neexistand unul intrinsec), insemnand ca acesta se poate modifica la oricare noua atribuire.
• Spre deosebire de alte limbaje de programare des utilizate (C, Java), PHP nu asigura suportul pentru variabile globale.
Tehnologii WEB - curs
49
3. Variabile(III)
• Trebuie mentionat, totusi, ca exista posibilitatea utilizarii in corpul functiilor a variabilelor definite in script, folosindu-se tabloul $GLOBALS, in care cheile elementelor reprezinta numele variabilelor.
• Cu toate ca PHP nu suporta variabilele globale, exista un numar de variabile tablou predefinite, cunoscute sub denumirea de tablouri superglobale, al caror comportament este similar cu cel al variabilelor globale utilizate in alte limbaje de programare.
Tehnologii WEB - curs
50
• Astfel, aceste tablouri pot fi accesate in orice punct al scriptului, inclusiv in interiorul metodelor si functiilor.
• Alaturi de tabloul superglobal $GLOBALS, din categoria respectiva mai fac parte:
• $_GET si $_POST – contin toate datele get si, respectiv, post primite de PHP de la browser;
• $_COOKIE - include toate cookie-urile primite de PHP de la browser;
Tehnologii WEB - curs
51
Variabilele globale pot fi accesate automat de oriunde, inclusiv din interiorul functiilor.
• s_REQUEST - contine toate variabilele GET, POST si COOKIE primite de PHP de la browser
• s_SERVER - include valorile variabilelor setate de server sau pe cele direct legate de mediul de executie al scriptului curent
• s_FILES - contine informatii despre fisierele incarcate pe server via HTTP
• s_SESSION - include variabile inregistrate in sesiunea curenta
• s_ENV - contine variabile furnizate script-ului de catre mediul de executie
Tehnologii WEB - curs
52
Constante(I)
Constanta este un identificator pentru o valoare scalara.
Pentru definirea si utilizareaconstantelor trebuie respectate urmatoarelereguli:
• numele constantelor nu sunt precedate de simboluldolar
• numele lor vor fi alcatuite la fel ca si ale variabilelor
De asemenea, ele sunt case sensitive, motiv pentru care, prin conventie, se scriu intotdeauna cu majuscule;
Tehnologii WEB - curs
53
Constante(II)• odata definita, valoarea unei constante nu mai poate fi schimbata pe parcursul executiei unui script, cu exceptia unor constante predefinite (built-in), dintre care se poate aminti:
•constantele magice _file (indica numele fisierului curent) si _LINE (indica numarul liniei pe care se afla)
•precum si PHP_VERSION (precizeaza versiunea interpretorului PHP)
•PHP_OS (are ca valoare numele sistemului de operare al calculatorului pe care functioneaza interpretorul PHP);
Tehnologii WEB - curs
54
Constante(III)
• Functiile define() si defined() sunt utilizate pentru definirea (inregistrarea) constantelor si, respectiv, pentru verificarea existentei acestora.
• Un exemplu in care sunt folosite ambele functii:
<?php
define("CAPITALA", "Bucuresti");
if(defined("CAPITALA"))
echo CAPITALA;
?>
Tehnologii WEB - curs
55
Constante(IV)
• Primul argument al functiei define() este un sir de caractere, reprezentand numele constantei, iar al doilea o expresie PHP valida (exceptand tablourile si obiectele), numita valoarea constantei.
• Daca al treilea argument (acesta fiind optional si avand tipul boolean] al functiei define() este precizat si are valoarea true (define ("CAPITALA", "Bucuresti", true)), constanta inregistrata va fi case insensitive (adica, se poate utiliza si “capitala”).
• Pentru a obtine toate constantele PHP predefinite, se poate utiliza functia get_defined_constants().
Tehnologii WEB - curs
56
Operatori(I)
• In PHP sunt folosite trei tipuri de operatori:
1. unari (se aplica unui singur operand)
2. binari (utilizeaza doi operanzi)
3. ternari (se folosesc impreuna cu trei operanzi)
• PHP poate realiza operatii binare numai in situatia in care cei doi operanzi au acelasi tip.
Tehnologii WEB - curs
57
Operatori(II)
• Daca acestia au tipuri diferite, se realizeaza - in prealabil -conversia unui operand la tipul celuilalt, utilizand regulile urmatoare:
• daca tipurile celor doi operanzi sunt intreg si dublu, operandul intreg este convertit la tipul dublu
• daca operanzii sunt de tip intreg si sir de caractere, operandul sir caractere de este convertit la tipul intreg
• daca operanzii sunt de tip dublu si sir de caractere, operandul sir de caractere este convertit la tipul dublu
• De asemenea, operanzii de tip logic, null si resursa sunt convertiti la tipul intreg, astfel: true la 1 si false la 0, null la 0si resursa la id-ul resursei.
Tehnologii WEB - curs
58
1. Operatori unari
Operatorii unari utilizati in PHP sunt:
• operatorul de negatie logica (!)
• operatorul de negatie pe biti (~)
• operatorii de incrementare/decrementare:
• postincrementare ($var++)
• preincrementare (++$var)
• postdecrementare ($var--)
• predecrementare (--$var)
Tehnologii WEB - curs
59
• operatorii pentru conversia de tip (cast):
• (int), (integer) - schimba tipul la intreg
• (float), (real), (double) - schimba tipul la duble
• (string) - schimba tipul la sir de caractere
• (bool), (boole) - schimba tipul la boolean
• (array) - schimba tipul la tablou
• (object) - schimba tipul la obiect
Trebuie remarcat ca acesti operatori schimba tipul valorii, si nu al variabilei careia i se aplica;
• operatorul pentru împiedicarea afişării erorilor(@).
Tehnologii WEB - curs
60
2. Operatori binari
Operatorii binari utilizaţi în PHP sunt:
• operatori aritmetici:
• adunare (+)
• scadere (-)
• inmultire (*)
• impartire (/)
• modulo (%)
• operatorul de concatenare (.);
• operatori de atribuire:
• operatorul = (egal)
• si operatorii de atribuire compusi (dintr-un operator si semnul egal): +=, -=, *=, /=, %=, ^=, .=, &=, |=;
Tehnologii WEB - curs
61
• operatori de comparatie: • egal (==)• inegal (!=)• mai mare (>)• mai mic (<)• mai mare sau egal (>=)• mai mic sau egal (<=) • identic (===) • neidentic (!==)
Pentru ultimii doi operatori, conversia de tip nu este efectuata, comparându-se atât tipurile, cât şi valorile acestora;
• operatori logici: AND logic (&&, and), OR logic (| |, or) si XOR logic (xor);
• operatori pe biti: AND pe biti (&), OR pe biti ( | ) si XOR pe biti (^);
Tehnologii WEB - curs
62
Observatie:
• Cu exceptia operatorului de concatenare (in cazul caruia operanzii folositi au tipul sir de caractere sau sunt convertiti la acesta), toti operatorii binari folosesc operanzi de tip numeric (intreg sau dublu).
• Daca unul sau amandoi operanzii au tipul sir de caractere, logic, null sau resursa, vor fi convertiti in echivalentii lor numerici, inainte de efectuarea operatiei.
Tehnologii WEB - curs
63
3. Operatori ternari
Singurul operator ternar suportat de PHPeste ? :, pentru utilizarea caruia se foloseste sintaxa urmatoare:
$variabila = expresie ? expresie1 : expresie2
• Operatorul ? : evalueaza expresia expresie.
• Daca rezultatul este true, variabila $variabila va primi valoarea obtinuta prin evaluarea expresie1.
• In caz contrar, $variabila va primi valoarea rezultata prin evaluarea expresie2.
Tehnologii WEB - curs
64
Exemplu de script in care se foloseste operatorul amintit:
<?php
$media=9.50;
$situatiescolara=($media>=8.50) ? "este premiant." : "nu este premiant.";
echo "Elevul ".$situatiescolara;
?>
Tehnologii WEB - curs65