Upload
others
View
30
Download
2
Embed Size (px)
Citation preview
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ProgramareProgramare WebWeb
LimbajulLimbajul PHPPHPLimbajulLimbajul PHPPHP
Ciprian [email protected]
Programare Web – Curs 3 1
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ObiectiveObiectiveObiectiveObiective• Obiectivul acestui curs un este o prezentare completă a
li b j l i PHP i i t dlimbajului PHP ci o introducere.
• Limbajul este simplu, ușor de învățat, semănând cu alte j p ș țlimbaje de programare deja studiate.
• Există o multitudine de cărți și documentații accesibileExistă o multitudine de cărți și documentații accesibile online din care se pot aprofunda diversele aspecte ale limbajului și folosirii acestuia.
• În cursurile de PHP vom prezenta atât interfața sa cu SGBD-ul MySQL cât și scurte exemple de lucru cu OracleSGBD ul MySQL cât și scurte exemple de lucru cu Oracle și ODBC.
Programare Web– Curs 3 2
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
IntroducereIntroducereIntroducereIntroducere• PHP a reprezentat inițial o abreviere pentru “Personal
Home Pages tools” şi a fost creat în 1994 de RasmusHome Pages tools şi a fost creat în 1994 de Rasmus Lerdorf.
• În primele versiuni (PHP/FI) el conţinea suport doar pentru p ( ) ţ p ppachetul de baze de date mSQL (mini SQL).
• Zeev Suraski șiAndi Gutmans au rescris parserul în 1997, formând prima versiune matură a PHP (3), redenumit în ‘PHP: Hypertext Processor’
• PHP poate fi folosit în conjuncţie cu o largă listă de SGBD-• PHP poate fi folosit în conjuncţie cu o largă listă de SGBD-uri, atât comerciale cât şi necomerciale (free software) incluzand MySQL, dBase, Oracle, DB2, PostgreSQL, S base InterBase SQLSer er ODBC etcSybase, InterBase, SQLServer, ODBC, etc.
• În 2004 a fost prezentat PHP 5, având la bază nucleul Zend Engine IIZend Engine II
• PHP 6 este la ora actuală în curs de dezvoltare.Programare Web– Curs 3 3http://en.wikipedia.org/wiki/PHP
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
IntroducereIntroducereIntroducereIntroducere• Ca pachet, PHP poate fi instalat atât ca un p , p
interpretor de sine stătător (deci un CGI separat) cât şi ca un modul pentru serverulseparat) cât şi ca un modul pentru serverul de web (Apache).
• Pachetul poate fi instalat de asemenea sub Windows IIS/PWS si Apache.p
• Informaţii complete despre instalare şi fi î di i t t fi ă itconfigurare în diverse variante pot fi găsite
în manualul care îl însoţeşte.
Programare Web– Curs 3 4
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
InserareInserare codcodInserareInserare codcod• Introducerea de inserturi scrise în PHP în fişierele
HTML poate fi făcută în mai multe moduri (funcţiaHTML poate fi făcută în mai multe moduri (funcţia echo are acelaşi efect cu printf din limbajul C):
1.<?php echo "Varianta 1 tip XML\n"; ?>
2 ? h "V i t 2 i i l \ " ?2.<? echo "Varianta 2, cea mai simpla\n"; ?>
3.<script language="php">3. script language php
echo "Varianta 3, tip limbaj pentru scripturi";
</script>;
4.<% echo "varianta 4, tip ASP"; %>Programare Web– Curs 3 5
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
InserareInserare codcod• Pentru folosirea unora dintre aceste
InserareInserare codcod
variante interpretorul de PHP trebuie configurat corespunzător (variantele 2 și 4)configurat corespunzător (variantele 2 și 4)
• Opțiunile respective se găsesc în fișierul de configurare php.ini
; Allow the <? tag. Otherwise, only <?php and <script> tags are recognized. ; NOTE: Using short tags should be avoided when developing applications or ; libraries that are meant for redistribution, or deployment on PHP ; servers which are not under your control, because short tags may not ; be supported on the target server For portable redistributable code; be supported on the target server. For portable, redistributable code, ; be sure not to use short tags. short_open_tag = On
All ASP t l <% %> t
Programare Web– Curs 3 6
; Allow ASP-style <% %> tags. asp_tags = Off
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
DescriereDescriereDescriereDescriere• Insertul poate conţine o singură instrucţiune, ca
în exemplele de mai sus, sau mai multe instrucţiuni.
• Formatul instrucţiunilor este liber, putându-se continua pe mai multe liniicontinua pe mai multe linii.
• Ca şi în C fiecare instrucţiune este terminată cu t i i lăpunct şi virgulă.
• Directiva de închidere bloc php ține și loc de ;p p ț ș
Programare Web– Curs 3 7
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ExempleExempleExempleExemple• Obișnuit:
<?phph ‘H ll ld'echo ‘Hello world';
?>• Fără ; în final de bloc:
h h ‘H ll ld' <?php echo ‘Hello world' ?>• Fără directiva de închidere la ultimul bloc (dar cu ă ă d ec a de c de e a u u b oc (da cu
; !)<?php echo ‘Putem omite directiva in final';<?php echo Putem omite directiva in final ;
Programare Web– Curs 3 8
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ComentariiComentariiComentariiComentarii• Comentariile sunt ca și in C / Unix shell:ș
<?phpecho ‘Test'; // Comentariu pe linie/* Comentariu pe/ Comentariu pe
potential mai multe linii */echo ‘Ceva'; # Comentariu pe linie?>?>
Programare Web– Curs 3 9
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
TipuriTipuri șșii variabilevariabileTipuriTipuri șșii variabilevariabile• PHP este un limbaj interpretat. În consecință nu este
ă d l i bil lnecesară declararea variabilelor.
• O variabilă împrumută tipul valorii stocate în ea la momentul respectiv.
• O variabilă își poate schimba tipul pe parcursul execuției scriptului PHP.
• O variabila se creează în momentul în care se depune o valoare în ea.
• Pentru conversia între tipuri (daca e necesară) se pot p ( ) pfolosi construcţii de conversie de tip cast similare cu cele din C sau funcţia settype.
Programare Web– Curs 3 10
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
TipuriTipuriTipuriTipuri• Există 8 tipuri de date în PHP: 4 tipuri scalare,
două compuse și două speciale1. Boolean2.Integer3 Float (include double)3.Float (include double)4.String5.Array6.Objectj7.Resource8 Null8.Null
Programare Web– Curs 3 11
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
VariabileVariabileVariabileVariabile• Numele oricărei variabile este prefixat cu simbolul $.
• Acesta e un marcaj de variabilă și nu face efectiv parte din nume.
• Pentru aflarea tipului unei variabile se poate folosi funcția gettypep p ț g ypsau var_dump.
• Instrucţiunea de atribuire este identică cu cea din limbajul C.
• Dacă variabila nu este deja definită, ea se crează automat:
$nume = "Ion";$nume = "Ion";$adresa = "Bucuresti";$sir = "1234";$ ;$numar = (int) $sir; // exemplu de cast
Programare Web– Curs 3 12
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Colectarea memorieiColectarea memorieiColectarea memorieiColectarea memoriei• În PHP memoria este automat colectată –
programul cunoaște când o variabilă nu mai este folosită și colectează automatmai este folosită și colectează automat memoria ocupată de aceasta
• Singura excepție: conexiunile cu bazele de date
Programare Web– Curs 3 13
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
TipulTipul BooleanBooleanTipulTipul BooleanBoolean• O variabilă de tip Boolean poate conține valoarea True
F lsau False.
• În cazul conversiei la Boolean, sunt considerate False(printre altele):– Literalul FALSE– Valoarea întreagă sau reală (float, double) 0 (zero)
– Un șir vid
– Șirul "0"
– Un array cu 0 elemente
Ti l i l NULL (i l â d i bil l t t i i t t )– Tipul special NULL (incluzând variabilele ne-setate = inexistente)
• Orice altă valoare este considerată True (inclusiv orice resursă)resursă)
Programare Web– Curs 3 14
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
TipulTipul îîntregntregTipulTipul îîntregntreg• Specificarea se poate face în bazele 10, 8 p p ,și 16:
h<?php$a = 1234; // zecimal$a 1234; // zecimal$a = -123; // zecimal, negativ$a = 0123; // octal$a = 0x1A; // hexazecimal$a = 0x1A; // hexazecimal?>
Programare Web– Curs 3 15
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
NumereNumere îîntregintregiNumereNumere îîntregintregi• Dacă o cifră este incorectă restul cifrelor se ignoră:
? h<?php$a = 123EU4PLECLA5678; // 123$a = 012389; // octal 0123$a 012389; // octal 0123$a = 0x1ASPARAGUS; // hexa 0x1A?>
• Dacă se depășește capacitatea de reprezentare pentru întregi (~2^31), valoarea devine automat float.
• La conversia de la float la intreg numărul e rotunjit spre 0• La conversia de la float la intreg numărul e rotunjit spre 0.• Dacă se depășește capacitatea de reprezentare pentru întregi
rezultatul este nedefinit (nu se emite nici o atenționare!)• La conversia de la string la număr se ia prefixul întreg al numărului
(ca mai sus):$a = 1 + “3 iezi cucuieti”; // $a devine 4$a = 1 + 3 iezi cucuieti ; // $a devine 4$a = “3 iezi cucuieti” + 1; // $a devine 4
Programare Web– Curs 3 16
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
TipulTipul real (float, double)real (float, double)TipulTipul real (float, double)real (float, double)• Se pot scrie în formatul uzual sau exponențial:
<?php$a = 1.234;$a 1.234;$b = 1.2e34;$ 12E 34$c = 12E-34;?>
• Valorile limită sunt dependente de platformă, dar uzual numerele sunt până la ~1.8e308 cu o precizie de 14 cifre.
• Conversia de la șir la float se face similar cu cea a întregilor (până la primul caracter care nu face parte dintr-o reprezentare corectă de număr real).
Programare Web– Curs 3 17
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
TipulTipul ARRAYARRAYTipulTipul ARRAYARRAY• Un tablou PHP este o succesiune de
perechi (cheie, valoare).Li i i t bl i i ti• Li se mai spune și tablouri asociative.
• Un tablou poate fi exploatat în modul clasicUn tablou poate fi exploatat în modul clasic (chei pornind de la 0 ca în C) sau ca tablou asociativ (acces prin cheie cheile putândasociativ (acces prin cheie, cheile putând să nu fie succesive și nici numerice.
Programare Web– Curs 3 18
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ExempleExempleExempleExemple<?php
$a = array(“pw" => “examen"$a = array( pw => examen ,4 => ”an terminal”,“succes” =>true);
echo $a[“pw”], $a[4] // examen an terminal// $b = array cu 2 dimensiuni
$b = array(“medii" => array(1 => 9 45 2 => 9 5 3$b array( medii > array(1 > 9.45, 2 > 9.5, 3=> 8.12, 4 => 9.90, “stat”=>10));
echo $b[“medii"][2]; // 9.5h $b[“ dii"][“ "] // 10echo $b[“medii"][“stat"]; // 10
// $c e identic cu $b$c = array(“medii" => array(1 => 9.45, 9.5, 8.12,$ y( y(
9.90, “stat”=>10));echo $c[“medii"][2]; // 9.5echo $c[“medii"][“stat"]; // 10echo $c[ medii ][ stat ]; // 10
?>Programare Web– Curs 3 19
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
TipulTipul ArrayArrayTipulTipul ArrayArray• Cheia trebuie să fie scalară (un alt array ( y
sau obiect)Adă î ă i l t h i• Adăugarea încă unui element cu cheie maximă negativă adaugă o pereche cu cheia 0 (începând cu v4.3.0)
• Cheia TRUE devine 1• Cheia TRUE devine 1• Cheia FALSE devine 0• Cheia NULL devine șirul vid
Programare Web– Curs 3 20
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ExempluExempluExempluExemplu$regiune = array(-12 => “Oltenia”);// o variabila de tip array cu cheia// maxima -12// maxima 12// Adaugam noi elemente si vom crea noi// hi h i i d 0// perechi cu chei incepand cu 0:$regiune[] = "Muntenia"; // elementul 0$regiune[] = "Moldova"; // elementul 1• În lipsă, cheile pleacă de la 0:În lipsă, cheile pleacă de la 0:
$orase = array(“Bucuresti”, “Ploiesti”,“C i ”) // h i 0 1 2“Campina”) // chei 0, 1, 2
Programare Web– Curs 3 21
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ConversiiConversiiConversiiConversii• La conversia din tipurile întreg, real, string,
boolean și resursă în tipul array se crează un tablou cu un singur element cu cheia 0 și valoarea respectivă.
• Dacă se convertește un obiect la array obținemDacă se convertește un obiect la array, obținem un array având ca elemente proprietățile obiectului Mai multe amănunte în documentațiaobiectului. Mai multe amănunte în documentația PHP.C i i l i l l d l• Conversia unei valori nule la array duce la un array vid (Atenție: vid nu înseamnă nul!)
Programare Web– Curs 3 22
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ComparaComparațțiiiiComparaComparațțiiii• 2 tablouri se pot compara astfel:p p
– Egalitate: $a == $b adevărat daca au aceleași perechi (cheie valoare)perechi (cheie, valoare)
– Identitate: $a === $b adevărat dacă au aceleași perechi (cheie, valoare) în aceeași ordine și cu aceleași tipuri
– Inegalitate: $a <> $b sau $a != $b. Inversa egalității.egalității.
– Nonidentitate: $a !== $b. Inversa identității.
Programare Web– Curs 3 23
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ComparațiiComparațiiComparațiiComparații• Se pot afla diferențele dintre 2 tablouri folosind funcția
dif t ă l il di tarray_dif care returnează valorile dintr-un array care nu se găsesc în al doilea:
h<?php$array1 = array(“ion", “vasile", “ion", “elena");$$array2 = array(“vasile", “ion", “mia");$rezultat = array_diff($array1, $array2);print_r($rezultat);// rezultat: [3]=>“elena”
?> Afișează informații despre conținutul unor variabile în format human-readable.
P t l l t fi ă
Programare Web– Curs 3 24
Pentru exemplul nostru se afișează:Array ( [3] => elena )
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ReuniuneReuniuneReuniuneReuniune• Două tablouri se pot reuni folosind operatorul +:
$c = $a + $b$c = $a + $b
• Rezultatul conține perechile primului array la care se adaugă perechile din al doilea array cu o cheie care nu există în primul.
• Exemplu:
<?php
$array1 = array(“ion", “vasile", “ion", “elena");
$array2 = array(“vasile", “ion", “mia");
$rezultat = $array2 + $array1;
print_r($rezultat);
?>
• Vom obține un tablou cu 4 elemente: elementele din array2 (chei 0, 1, 2) și ultimul element din array 1 (cheia 3):ultimul element din array 1 (cheia 3):
(“vasile", “ion", “mia“, “elena")Programare Web– Curs 3 25
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ExempluExempluExempluExemplu• Același exemplu, însă altă adunare:
h<?php
$array1 = array(“ion", “vasile", “ion", “elena");
$ 2 (“ sil " “i " “ i ")$array2 = array(“vasile", “ion", “mia");
$rezultat = $array1 + $array2;
print r($rezultat);print_r($rezultat);
?>
• Vom obține un tablou cu 4 elemente: elementele din array1 (chei 0 1 2 si 3)Vom obține un tablou cu 4 elemente: elementele din array1 (chei 0, 1, 2 si 3) și nici un element din array 0 (pentru că toate cheile deja există):
(“ion", “vasile", “ion“, “elena")
Programare Web– Curs 3 26
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
TipulTipul ObiectObiectTipulTipul ObiectObiect• Un obiect se declară prin folosirea operatorului
new urmat de un constructor de clasă:$objectName = new ClassName();$objectName new ClassName();$objectName = new ClassName(97.58, 1);
• Metodele și proprietățile unui obiect se accesează folosind ->.$Checking->getBalance();$Ch kN b 1022$CheckNumber = 1022;$Checking->getCheckAmount($CheckNumber);g g ( )
Programare Web– Curs 3 27
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ClaseClaseClaseClase• Pentru crearea unei clase se folosește cuvântul
cheie class:class ClassName {class ClassName {// membrii și funcţii membre}
• Numele claselor poate fi obținut cu get class:• Numele claselor poate fi obținut cu get_class:$Checking = new BankAccount();echo 'The $Checking object is instantiated from the ‘.
get_class($Checking) . “class.</p>";
Programare Web– Curs 3 28
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Clase externeClase externeClase externeClase externe• Clasele pot fi declarate în fișiere externe, p ș ,
caz în care se pot folosi funcțiile:include()– include()
– require()– include_once()
i ()– require_once()
Programare Web– Curs 3 29
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Specificatori de accesSpecificatori de accesSpecificatori de accesSpecificatori de acces• Specificatorii de acces determină drepturile de acces
asupra membrilor unei claseasupra membrilor unei clase
• În PHP există trei nivele de protecție:bli– public
– private
– protected
• Public – oricine are acces la membrii clasei
• Private – se restricționează dreptul de acces asupra membrilor claseiclass MyClass {
private $id = 18;
bli f ti tId() { t $thi id }public function getId() { return $this->id; }
}Programare Web– Curs 3 30
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ExempluExempluExempluExempluclass Person { $judy = new Person();
private $name;
function construct($name) {
$judy->setName("Judy");
$joe = new Person();
$function __construct($name) {$this->name = $name;
}
$joe->setName("Joe");
print $judy->getName() . "\n"; //print Judy
function setName($name) {$this->name = $name;
}
//print Judy
print $joe->getName(). "\n"; //print Joe}
function getName() {return $this->name;
$judy = new Person("Judy");
$joe = new Person("Joe");$ ;}
};print $judy->getName();
print $joe->getName();
Programare Web– Curs 3 31
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Proprietăți staticeProprietăți staticeProprietăți staticeProprietăți statice
l M U i IdCl {class MyUniqueIdClass {
static $idCounter = 0;
public $uniqueId;
function construct() {
$obj1 = new MyUniqueIdClass();
print $obj1->uniqueId . "\n"; // i t 1function __construct() {
self::$idCounter++;$this->uniqueId = self::$idCounter;
}
//print 1
$obj2 = new MyUniqueIdClass();
p i t $ bj2 > i Id "\ "; }}
print $obj2->uniqueId . "\n"; //print 2
Programare Web– Curs 3 32
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Clonarea obiectelorClonarea obiectelorClonarea obiectelorClonarea obiectelor
class MyClass {class My lass {
public $var = 1;
}}
$obj1 = new MyClass();
$obj2 = $obj1;
obj1
object $obj2 = $obj1;
$obj2->var = 2;
print $obj1 >var; //print 2
obj2
print $obj1->var; //print 2
$obj1 = new MyClass();obj1 object
$obj2 = clone $obj1;
$obj2->var = 2;
$obj2 object
Programare Web– Curs 3 33
print $obj1->var; //print 1j
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
PolimorfismPolimorfismPolimorfismPolimorfism• Mecanism de moștenire a unei singure ș g
clase– Similar Java– Similar Java
• Însă se pot implementa mai multe interfețe
class Child extends Parent { class A implements B, C, ... {class Child extends Parent {...}
class A implements B, C, ... {...}
interface I1 extends I2, I3, ... {...}
Programare Web– Curs 3 34
}
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
TipulTipul ObiectObiectTipulTipul ObiectObiect• … mai multe detalii la orele de laborator.• Dacă o valoare de alt tip este convertită la
ti l bi t bți i t ță l itipul obiect, obținem o instanță a clasei stdClass.
• Dacă se convertește la obiect o valoare nulă noua instanță va fi vidănulă, noua instanță va fi vidă.
• Dacă un tablou se convertește la obiect șcheile devin proprietăți.
Programare Web– Curs 3 35
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Tipul ResursTipul ResursăăTipul ResursTipul Resursăă• Tipul resursă este un tip special, variabilele de
acest tip conțin o referință către o resursă externa.
• Felul resursei se poate obține cu funcția get resource type (ex: mysql link file domxmlget_resource_type (ex: mysql link, file, domxml document, etc.).C i l ti l ă (di• Conversia la tipul resursă nu are sens (din definiția tipului)
• O resursă care nu mai este referită este detectată automat de 'garbage collector‘ și eliberată (deci g g ș (nu e necesară eliberarea manuală).
Programare Web– Curs 3 36
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
TipulTipul NULLNULLTipulTipul NULLNULL• Tipul NULL are o singură valoare, NULL.
• O variabilă nula nu conține nici o valoare.
• O variabilă este considerată nulă dacă:1. I-a fost asignată valoarea NULL
2. Nu i-a fost asignată încă nici o valoare (deci eventual ea nu există).
3 A fost dealocată cu funcția unset($variabila)3. A fost dealocată cu funcția unset($variabila)
• O variabilă se poate testa dacă e nulă sau nu cu funcția is_null($variabila)._ ($ )
• O variabilă se poate testa dacă există sau nu (cazurile 2 și 3 de mai sus) cu funcția isset($variabila, …)
• O variabilă se poate testa dacă este goală cu empty($variabila). Sunt considerate goale variabilele care conțin echivalentul lui FALSE (inclusiv care conțin valoarea NULL)(inclusiv care conțin valoarea NULL).
Programare Web– Curs 3 37
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
VariabileVariabileVariabileVariabile• Numele variabilelor este prefixat cu $ (marcaj de
variabila).• Numele este case-senzitiv (literele mari suntNumele este case senzitiv (literele mari sunt
considerate diferite de cele mici).U t PHP î lit ă• Un nume corect PHP începe cu literă sau underscore și continuă cu litere, cifre și
dunderscore.• Variabilele pot conține referințe către alte p ț ț
variabile (adresa se prelevează cu &, ca în C). Exemplu:p
Programare Web– Curs 3 38
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
VariabileVariabileVariabileVariabile<?php$unu = 'Ceva';$doi = &$unu; // $doi e o referinta la $unu.$doi = "Altceva"; // Modificam $doiecho $unu; // Ambele contin acelasiecho $doi; // sir?>
• Nu se poate preleva cu & adresa unei expresii (doar a unei variabile).
• PHP inițializează variabilele cu valori implicite dar nu este bine să ne bazăm pe aceste valori (0 pentru numere, p ( pFalse pentru boolean, etc).
Programare Web– Curs 3 39
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
VariabileVariabile predefinitepredefiniteVariabileVariabile predefinitepredefinite• Există un număr mare de variabile predefinite (de
sistem) pe care scriptul le poate folosi.• Cele mai utilizate sunt:Cele mai utilizate sunt:
– $_GET, $_POST, $_COOKIES, $_REQUEST – conțin valorile transmise scriptului cu metodele GET, POST, cookie sau p , ,reuniunea lor
– $_SESSION – conține variabile care se pot folosi de o succesiune d ții d i t i f ă i d lde execuții de scripturi care formează o sesiune de lucru
– $GLOBALS – conține toate variabilele globale ale scriptului
• O descriere a acestor variabile și a altora din aceeași categorie se găsește în documentația PHP
Programare Web– Curs 3 40
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
DomeniulDomeniul (scope)(scope)DomeniulDomeniul (scope)(scope)• Variabilele sunt cunoscute în contextul în care au
fost create.• Cele definite în afara oricărei funcții sunt similareCele definite în afara oricărei funcții sunt similare
variabilelor globale din C.C l d fi it î f ții ( i i ) t l l• Cele definite în funcții (prin asignare) sunt locale acelei functii.
• Spre deosebire de limbajul C o variabilă globală nu este cunoscută în interiorul unei funcții decât țdacă este declarată cu global în acea funcție.
Programare Web– Curs 3 41
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
DomeniulDomeniul (scope)(scope)DomeniulDomeniul (scope)(scope)• Exemplul 1:
$a = 1; /* variabila globala */function Ecou() { function Ecou() {
$a = 2; /* se asigneaza o valoare variabilei locale */h $ /* ti i i bil l l */echo $a; /* tiparire variabila locala */
}Ecou();echo $a; /* tiparire variabila globala */echo $a; / tiparire variabila globala /
• Rezultat 21
Programare Web– Curs 3 42
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
DomeniulDomeniul (scope)(scope)DomeniulDomeniul (scope)(scope)• Exemplul 2:
$a = 1; /* variabila globala */function Ecou() { function Ecou() {
global $a$ 2 /* i l i bil i l b l */$a = 2;/* se asigneaza o valoare variabilei globale */echo $a;/* tiparire variabila globala */
}Ecou();Ecou();echo $a; /* tiparire variabila globala */
R lt t 22• Rezultat 22
Programare Web– Curs 3 43
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Domeniul (scope)Domeniul (scope)Domeniul (scope) Domeniul (scope) • Un alt mod de a defini variabile globale cunoscute și în interiorul
funcțiilor este folosirea tabloului asociativ predefinit $GLOBALS,funcțiilor este folosirea tabloului asociativ predefinit $GLOBALS, având ca indici numele variabilelor globale:
• Exemplu:
$a = 1; /* variabila globala */function Ecou() {
$GLOBALS["a"] = 2; /* se asigneaza o valoarevariabilei globale */g
echo $GLOBALS["a"];/* tiparire variabila globala */}}Ecou();echo $a; /* tiparire variabila globala */echo $a; / tiparire variabila globala /
• Rezultat 22Programare Web– Curs 3 44
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
VariabileVariabile staticestaticeVariabileVariabile staticestatice• Ca și în C se pot defini variabile locale funcțiilor dar care își păstrează
valoarea de la un apel la altulvaloarea de la un apel la altul.
• Aceste variabile se numesc statice.
Variabilele statice pot fi inițializate cu o valoare care apoi se modifică• Variabilele statice pot fi inițializate cu o valoare care apoi se modifică și este păstrată pentru apelurile viitoare:
function Increment() { function Increment() { static $a = 0;echo $a;echo $a;$a++;
}}• Rezultatul apelului repetat al acestei funcții va fi afișarea numerelor 0,
1, 2, . . .
Programare Web– Curs 3 45
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
MacrosubstituMacrosubstituțțieieMacrosubstituMacrosubstituțțieie• Numele unei variabile se poate găsi în altă variabila.
• Acest procedeu, numit macrosubstituție, este întâlnit și în alte limbaje, cum este Xbase (dBase, Fox, Clipper).
Instrucțiunile:• Instrucțiunile:
$a = "Limbajul";$$ " PHP"$$a = " PHP";
• definesc două variabile: $a cu valoarea “Limbajul” și $Limbajul cu valoarea “ PHP”valoarea PHP .
• În acest caz instrucțiunea:
echo "$a ${$a}";echo $a ${$a} ;va afișa Limbajul PHP
Programare Web– Curs 3 46
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
VariabileVariabile externeexterneVariabileVariabile externeexterne• În această categorie intră variabilele corespunzătoare simbolurilor primite de la un formular
și variabilele de mediu setate de serverul de web.
• Să presupunem că avem următorul formular:
<form action="actiune.php" method="post">Nume: <input type="text" name="nume"><br>Nume: <input type= text name= nume ><br>Localitate: <input type="text" name="adresa[localitate]"><br>Strada: <input type="text" name="adresa[strada]"><br>Num r: <input t p "t xt" n m " dr s [num r]"><br>Numar: <input type="text" name="adresa[numar]"><br>Optiuni: <br><select multiple name="so[]">
ti l "Wi d 95" Wi d 95<option value="Windows 95">Windows 95<option value="Windows XP">Windows XP<option value="Windows Vista">Windows Vista
i l "Li " Li<option value="Linux">Linux</select><input type="submit">
</form>
Programare Web– Curs 3 47
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
VariabileVariabile externeexterneVariabileVariabile externeexterne• Scriptul actiune.php care tratează acest formular poate
i i i bil lprimi variabilele:– $nume, variabilă simplă
– $adresa, un tablou asociativ cu trei elemente
– $so, un tablou având atâtea elemente câte selecții s-au făcut în i l ti l di f lmeniul vertical din formular.
• Acest lucru se întâmplă însă doar dacă opțiunea de configurare a PHP register globals e setată pe Onconfigurare a PHP register_globals e setată pe On(implicit ea e însă Off, fiind potențial o breșă de securitate).securitate).
• În mod normal valorile celor 3 variabile se găsesc în $ POST și $ REQUEST$_POST și $_REQUEST.
Programare Web– Curs 3 48
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ConstanteConstanteConstanteConstante• Constantele se definesc similar cu limbajul C, cu define:<?php
// Constante validedefine("MATERIE", "Programare Web");define("_EVAL_UARE", "Examen");define("NOTA10", "10");// Nume invaliddefine("2PAC", "Cantaret");// Asa arata constantele PHP,// e bine sa nu avem si noi la feldefine("__NOTA__", "10");( )
?>Programare Web– Curs 3 49
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ConstanteConstanteConstanteConstante• Spre deosebire de variabile:
– Constantele nu au un nume care începe cu $
– Constantele pot fi definite doar cu define() nu prin– Constantele pot fi definite doar cu define() nu prin atribuire
Constantele nu au domeniu de valabilitate ca– Constantele nu au domeniu de valabilitate ca variabilele (se pot folosi și în funcții de exemplu).
Nu pot să și schimbe valoarea și nu pot fi dealocate– Nu pot să-și schimbe valoarea și nu pot fi dealocate (unset)
Constantele pot conține doar valori scalare (boolean– Constantele pot conține doar valori scalare (boolean, intreg, real sau șir)
Programare Web– Curs 3 50
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ConstanteConstante predefinitepredefiniteConstanteConstante predefinitepredefinite• PHP pune la dispoziție și o serie de constante
predefinite.• Acestea au forma NumeAcestea au forma __Nume__• Printre ele sunt:
– __LINE__ numărul liniei curente în sursa PHP
– __FILE__ calea și numele complet al fișierului sursă PHP
– __DIR__ directorul acelui fișier
– __FUNCTION__ numele funcției curente (doar cu litere mici în PHP4)PHP4)
– __CLASS__ numele clasei (doar cu litere mici în PHP4)
– __METHOD__ numele metodei din clasă (doar PHP5)
Programare Web– Curs 3 51
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ExpresiiExpresiiExpresiiExpresii• Expresiile în PHP sunt similare celor din limbajul C• Se pot folosi construcții de tipurile:
$a++ ++$a– $a++, ++$a– $a--, --$a– $a += 3; (echivalentă cu $a = $a + 3;), în loc de +
putând fi orice operator valid pentru operația respectivă
– Atribuiri multiple, ca de exemplu:
$a = $b = ++$c; sau$a $b $c; sau
$a = $b += 10;
Programare Web– Curs 3 52
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
AtribuirileAtribuirile îîntorcntorc oo valoarevaloareAtribuirileAtribuirile îîntorcntorc o o valoarevaloare• Ca și în limbajul C atribuirile întorc o ș j
valoare:if ($ l t( )) if ($con = mysql_connect(…)) …
• Ca și în limbajul C o expresie logică eCa și în limbajul C o expresie logică e evaluată doar până în momentul în care valoarea sa este certă:valoarea sa este certă:mysql_connect(…) or die('Conexiune y q _ ( ) (esuata');
Programare Web– Curs 3 53
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
OperatoriOperatoriOperatoriOperatori• Aritmetici: +, -, *, /, % (modul), , , , ( )• Logici: ==, ===, !=, !==, <, >, <=, >=• Conectori logici: and, &&, or, ||, ! (negare),
xor (sau exclusiv)xor (sau exclusiv)• Operatori pe șiruri: . (concatenare)• Operatori pe biți: &, |, ~ (inversare biți)
Programare Web– Curs 3 54
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
StructuriStructuri de controlde controlStructuriStructuri de controlde control• Există o serie de structuri de control care
sunt similare celor din limbajul C.V i l d i ii i l i• Vom avea ca și acolo decizii, cicluri, alegere
• Se pot defini ca și în C funcții (nu există decât funcții nu și proceduri ca în Pascal)decât funcții, nu și proceduri ca în Pascal).
Programare Web– Curs 3 55
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
DeciziaDeciziaDeciziaDecizia• În PHP aceste instrucțiuni sunt asemănătoare ca sintaxa
l i il di li b j l Ccu cele similare din limbajul C.
• Sintaxa:
if (conditie_1){ instructiuni 1 }{ instructiuni_1 }
elseif (conditie_2){ i i i 2 }{ instructiuni_2 }
. . . . . . . . . .else { instructiuni_N }
• elseif și else sunt opționale (similar cu limbajul C)elseif și else sunt opționale (similar cu limbajul C).
Programare Web– Curs 3 56
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
DeciziaDeciziaDeciziaDecizia• Exemplu:p
if ($a > $b){ print "a este mai mare ca b";}
elseif ($a == $b)elseif ($a $b){ print "a este egal cu b";}
else{ print "a este mai mic decat b";}{ print a este mai mic decat b ;}
Programare Web– Curs 3 57
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
CiclulCiclul WHILEWHILECiclulCiclul WHILEWHILE• Sintaxa:
while ( conditie ){ i t ti i }{ instructiuni }
• Exemplu:p$i = 10;
hil ($i 0)while ($i >= 0){ print $i--; }{ print $i ; }
Programare Web– Curs 3 58
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
CiclulCiclul DODOCiclulCiclul DODO• Sintaxa:
do{ i t ti i }{ instructiuni }while ( conditie );( );
• Exemplu:$i 10$i = 10;dodo{ print $i--;}
$while ($i>0);Programare Web– Curs 3 59
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
CiclulCiclul FORFORCiclulCiclul FORFOR• Sintaxa:
FOR (expr1; expr2; expr3)instrucţiune
• Execuția unui astfel de ciclu se face astfel:– Se evaluează expresia expr1p
– Cât timp expresia expr2 are valoarea adevărat se repetă operațiile:• Se executa instrucțiunea (instrucţiune)
• Se evaluează expresia expr3
• Exemplu:for ($i = 1; $i <=10; $i++){ print $i;}
• Efectul va fi afișarea valorilor de la 1 la 10.Programare Web– Curs 3 60
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
FOREACHFOREACHFOREACHFOREACH• Sintaxa (2 variante):( )
foreach (expr_array as $valoare)statement
foreach (expr array as $cheie => $valoare)foreach (expr_array as $cheie $valoare)statement
• Se folosește pentru parcurgerea unui tablou (ciclu după elementele unui tablou)tablou (ciclu după elementele unui tablou)
Programare Web– Curs 3 61
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ExempluExempluExempluExemplu<?php// tiparirea unui tablou$arr = array("one" "two" "three");$arr = array( one , two , three );foreach ($arr as $val) {
h "V l $ l b / \ "echo "Value: $val<br />\n";}foreach ($arr as $k => $val) {
echo "Cheie: $k; Val: $val<br />\n";echo Cheie: $k; Val: $val<br />\n ;}??>
Programare Web– Curs 3 62
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
BreakBreak șșii ContinueContinueBreak Break șșii ContinueContinue• Aceste instrucțiuni se folosesc pentru a ieși dintr-un ciclu,
ti t t diți t l lrespectiv pentru a se trece necondiționat la un nou pas al ciclului chiar dacă pasul curent nu s-a terminat.
• Exemplu:
Tipărirea numerelor impare dintre 1 și 10
for ($i = 1;;$i++) { if ($i > 10) { break; }if ($i > 10) { break; }if ($i % 2) { continue; }
$print $i;}
Programare Web– Curs 3 63
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
AlegereaAlegerea (Switch)(Switch)AlegereaAlegerea (Switch)(Switch)• Sintaxa:
switch (expr){case val1:
instructiunicase val2:
instructiuni. . . . . . . .default:
instructiuni}
Programare Web– Curs 3 64
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
AlegereaAlegerea (Switch)(Switch)AlegereaAlegerea (Switch)(Switch)• Efectul este următorul:
– Se evaluează expresia exprl1 l– Se parcurg etichetele case (val1, val2, …) una
după alta. În cazul în care se găsește o egalitate, se executa instrucțiunile de la acea eticheta până la prima instrucțiune break sau
hpână se sfârșește întregul switch.
– Daca nu exista nici o egalitate se execută Daca nu exista nici o egalitate se execută instrucțiunile de la default.
Programare Web– Curs 3 65
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
AlegereaAlegerea (Switch)(Switch)AlegereaAlegerea (Switch)(Switch)• Exemplu:
switch ($i)switch ($i){case 0:
print "i egal cu 0";print i egal cu 0 ;break;
case 1:p int "i l 1";print "i egal cu 1";break;
case 2:i t "i l 2"print "i egal cu 2";
break;default:
i "i l 0 1 2"print "i nu este egal cu 0, 1 sau 2";}
• De remarcat că dacă instrucțiunile break ar lipsi, în cazul în care $i este egal cu 0 se tipăresc toate cele patru mesaje iar în cazul în care este egal cu 1 doar ultimele trei.
Programare Web– Curs 3 66
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
FuncFuncțțiiiiFuncFuncțțiiii• Programele PHP pot conține funcții definite de utilizator,
inclusiv functii recursiveinclusiv functii recursive.
• Sintaxa definiției unei funcții este următoarea:
f ffunction nume_functie(lista_parametri){instructiuniinstructiuni}
• Dacă se dorește ca funcția să întoarcă o valoare, se folosește instrucțiunea:
return expresie;Programare Web– Curs 3 67
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
FuncFuncțțiiiiFuncFuncțțiiii• Exemplu:p
function la_patrat ($numar) {return $numar * $numar;
}}echo la patrat(10);echo la_patrat(10);
Programare Web– Curs 3 68
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
FuncFuncțțiiiiFuncFuncțțiiii• Folosirea unei funcții se poate face doar după definiția
acesteiaacesteia.
• Parametri sunt transmiși prin valoare.
• Dacă se dorește transmiterea prin referință a unui argument, se poate folosi construcția &variabila:
function la_patrat (&$numar) {$numar = $numar * $numar;$ m $ m $ m ;
}$ 10;$a = 10;la_patrat($a);echo $a; // tipareste 100
Programare Web– Curs 3 69
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
FuncFuncțțiiiiFuncFuncțțiiii• Se poate transmite prin valoare adresa sa:
function la_patrat ($numar) {$numar = $numar * $numar;$numar = $numar $numar;
}$ 10$a = 10;la_patrat($a);echo $a; // tipareste 10la patrat(&$a);la_patrat(&$a);echo $a; // tipareste 100
Programare Web– Curs 3 70
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
FuncFuncțțiiiiFuncFuncțțiiii• La definirea unei funcții se pot asigna și valori
implicite pentru argumente.• În cazul în care acestea lipsesc la apel sunt luateÎn cazul în care acestea lipsesc la apel sunt luate
implicit valorile din definiție:f ti l t t ($ 4) {function la_patrat ($numar = 4) {
return $numar * $numar;$ $}
h l (10) // i 100echo la_patrat(10); // tipareste 100echo la patrat(); // tipareste 16_p (); // p
Programare Web– Curs 3 71
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
FuncFuncțțiiiiFuncFuncțțiiii• Astfel de argumente trebuie să fie ultimele din
listă.• De exemplu secvența:De exemplu secvența:
function inmultire ($numar1 = 4, $numar2) {return $numar1 * $numar2;
}}echo inmultire(10);
va semnala o eroare deoarece automat valoarea 10 va fi asignată primului argument.g p g
Programare Web– Curs 3 72
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
FuncFuncțții PHPii PHPFuncFuncțții PHPii PHP• PHP pune la dispoziție un număr foarte p p ț
mare de funcții, atât de uz general cât și funcții specifice accesului la diversefuncții specifice accesului la diverse sisteme de gestiune a bazelor de date.Ε În continuare sunt prezentate o parte dintre acestea…
Programare Web– Curs 3 73
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
FuncFuncțții ARRAYii ARRAYFuncFuncțții ARRAYii ARRAYarray array(lista valori);
• Creează un array conținând valorile din listă.Pentru un array bidimensional se poate folosiPentru un array bidimensional se poate folosi operatorul => pentru asocierea celor doi indici.
• Exemplu:• Exemplu:$note = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);$calificative = array("S"=>"Satisfacator",
"B"=>"Bine","F"=>"Foarte bine");• În primul caz s-a definit un array cu o singură
dimensiune iar în cel de-al doilea unul cu două dimensiuni.
Programare Web– Curs 3 74
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
FuncFuncțții ARRAYii ARRAYFuncFuncțții ARRAYii ARRAYvoid list(lista de valori);
• Asignează o lista de variabile ca și când ar fi un arrayarray.
• Exemplu:$rezultat = mysql_query("select nume_s,
grupa from studenti");g p )while (list($n, $g) =
mysql fetch row($rezultat))mysql_fetch_row($rezultat)){ print( "Nume: $n<br>Grupa: $g<br>\n"); }
Programare Web– Curs 3 75
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
FuncFuncțții ARRAYii ARRAYFuncFuncțții ARRAYii ARRAYint count(variabila);
• Întoarce numărul de elemente din variabilă.D ă t t ă t fi i• Dacă este un array acest număr poate fi mai mare ca 1. Dacă variabila nu este setată întoarce 0.
array each(array array);• Întoarce următoarea pereche (index valoare) dintr-• Întoarce următoarea pereche (index, valoare) dintr-
un array sub forma unui tablou având indicii 0 si 1 sau key și valuesau key și value.
Programare Web– Curs 3 76
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
FuncFuncțții ARRAYii ARRAYFuncFuncțții ARRAYii ARRAY• De notat că fiecare variabilă de tip array are
asociat un pointer intern care arată către unul dintre elementele sale iar funcția each() se poate folosi pentru parcurgerea sa.
• Exemplu:p$calificative = array ("S"=>"Satisfacator",
"B"=>"Bine" "F"=>"Foarte bine");B > Bine , F > Foarte bine );list($c, $d) = each($calificative);
At i• Atunci:– $c are valoarea "S"– $d are valoarea "Satisfacator"
Programare Web– Curs 3 77
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
FuncFuncțții ARRAYii ARRAYFuncFuncțții ARRAYii ARRAYmixed next(array tablou);( y )
• Întoarce următorul element al unui array sau false dacă nu mai sunt elementesau false dacă nu mai sunt elemente, avansând deci pointerul intern asociat t bl l itabloului.
• De notat că dacă un tablou are elementeDe notat că dacă un tablou are elemente nule și pentru acestea valoarea întoarsă va fi false De aceea pentru parcurgerea unuifi false. De aceea, pentru parcurgerea unui tablou se recomandă folosirea lui each().
Programare Web– Curs 3 78
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
FuncFuncțții ARRAYii ARRAYFuncFuncțții ARRAYii ARRAYmixed prev(array tablou);
• Întoarce precedentul element al unui array sau false dacă nu mai sunt elemente, decrementând pointerul intern asociat tabloului.
• Aceeași observație ca la next (folosire each)mixed reset(array tablou);
• Setează pointerul intern asociat tabloului la primul element al acestuia.
• Întoarce valoarea acestui element.int sizeof(array tablou);
• Întoarce numărul de elemente ale unui tablou. Este analog cu count().
Programare Web– Curs 3 79
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
FuncFuncțții deii de informareinformare//setaresetareFuncFuncțții de ii de informareinformare//setaresetareint error_reporting(int [level]);
• Setează nivelul de erori care sunt raportate de PHP Valorile respective pot fi cumulate prinPHP. Valorile respective pot fi cumulate prin adunare în cazul în care se doresc setate simultan mai multe tipuri de raportărisimultan mai multe tipuri de raportări.
string getenv(string variabila);• Întoarce valoarea unei variabile de mediu sau
false în caz de eroare.$ip = getenv("REMOTE_ADDR"); // prelevare
adresa IP a clientuluiadresa IP a clientului
Programare Web– Curs 3 80
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
FuncFuncțții deii de informareinformare//setaresetareFuncFuncțții de ii de informareinformare//setaresetarevoid putenv(string setare);
• Creează o nouă variabilă de mediu. Exemplu:
putenv("USER = $user");putenv( USER $user );int phpinfo(void);
Î t ită d i f ții i i d PHP ți i d• Întoarce o suită de informații privind PHP: opțiuni de compilare, versiune, informații despre serverul de web, variabile de mediu versiunea sistemului de operare etcvariabile de mediu, versiunea sistemului de operare, etc.
string phpversion(void);Ε Întoarce sub forma unui sir numărul versiunii PHP folosite.
Programare Web– Curs 3 81
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
AlteAlte funcfuncțțiiiiAlteAlte funcfuncțțiiiivoid eval(string sir);
• Șirul de caractere (care trebuie sa conțină expresii valide PHP) este evaluat.
• Exemplu:$nume = 'Ion';$ ' $ '$str = 'Ma numesc $nume<br>';echo $str;eval( "\$str = \"$str\";" );echo $str;
• Va avea ca efect tipărirea mesajelor:Ma numesc $numeMa numesc Ion
Programare Web– Curs 3 82
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
AlteAlte funcfuncțțiiiiAlteAlte funcfuncțțiiiivoid die(string mesaj);
• Afișează un mesaj și termină execuția scriptului.E l• Exemplu:$nume_fisier = '/usr/local/date.txt';$f = fopen($nume_fisier, 'r') or die "Nu se poate
deschide fisierul $filename";
void exit(void);T i ă i di t ți i t l i• Termină imediat execuția scriptului.
Programare Web– Curs 3 83
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
AlteAlte funcfuncțțiiiiAlteAlte funcfuncțțiiiivoid sleep(int secunde);p( )
• Întârzie execuția un număr de secunde.echo(string arg1, string [argn]...);
sauecho string arg1, string [argn]...;echo string arg1, string [argn]...;
• Evaluează și afișează parametrii primiți ca argument.
Programare Web– Curs 3 84
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
AlteAlte funcfuncțțiiiiAlteAlte funcfuncțțiiiiprint(string arg);
• Afișează argumentul.
int printf(string format, mixed [argumente]...);int printf(string format, mixed [argumente]...);• Afișează argumentele formatate conform șirului format
(asemănător cu limbajul C)(asemănător cu limbajul C).
int strcmp(string str1, string str2);C d i i Î l 0 lă 0• Compara doua șiruri. Întoarce o valoare < 0, egală cu 0 sau >0 după cum str1 este mai mic, egal sau mai mare decât str2 Literele mari și mici sunt considerate diferitedecât str2. Literele mari și mici sunt considerate diferite.
int strlen(string sir);Ε Întoarce lungimea unui șir de caractere.
Programare Web– Curs 3 85
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
AlteAlte funcfuncțțiiiiAlteAlte funcfuncțțiiiistring substr(string sir, int start, int [lung]);
• Întoarce un subșir conținând caracterele începând cu cel dat de start• Întoarce un subșir conținând caracterele începând cu cel dat de startsi având lungimea lung. Dacă start este negativ, numărătoarea pentru stabilirea caracterului inițial este făcută de la sfârșitul șirului. D ă l t ti lti l t l b i l i t l fl t lDacă lung este negativ ultimul caracter al subșirului este cel aflat la distanța lung de sfârșitul șirului. Întoarce întotdeauna cel puțin un
• caracter cel dat de startcaracter, cel dat de start.
• Exemple:
$rest = substr("abcdef" 1); // întoarce "bcdef"$rest = substr( abcdef , 1); // întoarce bcdef$rest = substr("abcdef", 1, 3); // întoarce "bcd"$rest = substr("abcdef" 1); // întoarce "f"$rest = substr( abcdef , -1); // întoarce f$rest = substr("abcdef", -2); // întoarce "ef"$rest = substr("abcdef" 3 1); // întoarce "d"$rest = substr( abcdef , -3, 1); // întoarce d$rest = substr("abcdef", 1, -1); // întoarce "bcde"
Programare Web– Curs 3 86
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
AlteAlte funcfuncțțiiiiAlteAlte funcfuncțțiiiiint is_array(mixed var);
Î t t d ă i bil t i f l ltf l• Întoarce true dacă variabila este un array si false altfel.
int is_double(mixed var);int is_float(mixed var);int is real(mixed var);int is_real(mixed var);
• Întorc true dacă variabila este un număr real și false altfel.
i t i i t( i d )int is_int(mixed var);int is_integer(mixed var);int is_long(mixed var);
• Întorc true dacă variabila este un număr întreg și falseÎntorc true dacă variabila este un număr întreg și falsealtfel.
Programare Web– Curs 3 87
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
AlteAlte funcfuncțțiiiiAlteAlte funcfuncțțiiiiint is_object(mixed var);
Î t t d ă i bil t bi t i f l ltf l• Întoarce true dacă variabila este un obiect și false altfel.
int is_string(mixed var);• Întoarce true dacă variabila este un șir de caractere și
false altfel.
int isset(mixed var);• Întoarce true dacă variabila există și false altfelÎntoarce true dacă variabila există și false altfel.
int unset(mixed var);• Elimină o variabilă.
string strval(mixed var);• Convertește la șir de caractere o variabilă scalară.
Programare Web– Curs 3 88
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
BibliografieBibliografieBibliografieBibliografie• Documentația PHP: http://www.php.net/docs.php• Câteva cărți disponibile online:
Sams Teach Yourself PHP in 10 Minutes(2005)– Sams - Teach Yourself PHP in 10 Minutes(2005) http://www.net130.com/CMS/Pub/book/book_web/bookweb php/2005 10 19 70383.htm_web_php/2005_10_19_70383.htm
– Object Oriented PHP Concepts Techniques and Code (și altele) la adresa: http://cid-(și altele), la adresa: http://cid846ffdcf0d3320d8.skydrive.live.com/browse.aspx/eBook
Programare Web– Curs 3 89