Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Programare Web - PHP (o prezentare generala)

10,677 views

Published on

Overview of PHP language and main characteristics, including built-in functions, facilities, and resources.

Published in: Technology
  • Be the first to comment

Programare Web - PHP (o prezentare generala)

  1. 1. Programare Web PHP – prezentare generala Dr. Sabin-Corneliu Buraga Facultatea de Informatica Universitatea “A.I.Cuza” – Iasi, Romania http://www.infoiasi.ro/~busaco/
  2. 2. <ul><li>PHP ( PHP: Hypertext Preprocessor ) </li></ul><ul><ul><li>Evolutie </li></ul></ul><ul><ul><li>Caracterizare </li></ul></ul><ul><ul><li>Interactiunea cu utilizatorul </li></ul></ul><ul><ul><li>Programare obiectuala in PHP </li></ul></ul><ul><ul><li>Instrumente & resurse </li></ul></ul>cuprins
  3. 3. <ul><li>Personal Home Page Tools ( 1994-1995 ) – Rasmus Lerdorf </li></ul><ul><li>PHP/FI 2.0 ( 1995 ) </li></ul><ul><li>PHP 3 ( 1998 ) Zeev Suraski & Andi Gutmans </li></ul><ul><li>PHP 4 ( 2000 ) motor de scriptare Zend </li></ul><ul><li>PHP 4.3 ( 2002-2003 ) motor de scriptare Zend 2.0 </li></ul><ul><li>PHP 5 ( 2004 ) multe facilitati inspirate din Java </li></ul><ul><li>PHP 6 ( in dezvoltare ) </li></ul>php | istoric
  4. 4. <ul><li>Limbaj de programare de tip script , interpretat, direct accesibil in cadrul documentelor HTML </li></ul><ul><li>Procedural, oferind si suport pentru programarea orientata-obiect </li></ul><ul><li>Sintaxa inspirata de C/C++ si Perl (mai nou, si de Java) – case sensitive </li></ul><ul><li>Disponibil gratuit ( open source ) pentru diverse platforme (UNIX/Linux, Windows, Mac OS X) si servere Web (Apache, IIS,…) </li></ul><ul><li>Paginile incluzind cod PHP au extensia .php (in trecut .php3 , .phtml ) </li></ul>php | caracterizare
  5. 5. <ul><li>Maniera de functionare a procesorului ( engine -ului) PHP </li></ul>php | caracterizare
  6. 6. <ul><li>Faciliteaza interactiunea cu utilizatorul (formulare Web, cookie -uri, sesiuni, integrare cu serverul Apache etc.) </li></ul><ul><li>Suport pentru manipularea bazelor de date (MySQL, ODBC, Oracle, PostgreSQL, SQLite,…) </li></ul><ul><li>Procesarea continutului resurselor (tipuri de arhive, PDF, fisiere grafice, certificate digitale,…) </li></ul><ul><li>Suport pentru tehnologiile XML (procesari SAX, DOM, simplificate; transformari, validari; servicii Web etc.) </li></ul><ul><li>Include extensii (module) diverse </li></ul><ul><li>Documentatia oficiala: www.php.net/docs.php </li></ul>php | caracterizare
  7. 7. <ul><li>Scripturi PHP introduse prin: </li></ul><ul><li><? echo (&quot;Salut! &quot;); /* simplu, nu? */ ?> </li></ul><ul><li><?php echo(&quot;In cazul documentelor XML. &quot;); </li></ul><ul><li>?> </li></ul><ul><li><script language=&quot;php&quot;> </li></ul><ul><li>echo (&quot;...&quot;); </li></ul><ul><li></script> </li></ul><ul><li><% echo (&quot;Tag-uri in stilul ASP&quot;); %> </li></ul>php | caracterizare De folosit
  8. 8. <ul><li>Variabile create “din zbor” </li></ul><ul><li>Tipuri scalare: integer , double , boolean , string </li></ul><ul><li>Tipuri complexe: tablouri (indexate/asociative) & obiecte </li></ul><ul><li>Tipuri speciale: resursa, referinta, nul ( NULL ) $ani = 33; /* o variabila obisnuita */ $conectat = TRUE; # variabila logica $prefer[&quot;culoare&quot;] = &quot;gri&quot;; // tablou asociativ </li></ul>php | caracterizare
  9. 9. <ul><li>Structuri de control – similare celor din C ( if , switch , while , do , for , break , continue ) if (!$nume) { echo ( &quot; Nu ati precizat numele! &quot; ); } else { echo ( &quot; Bine ai venit, &quot; . $nume . &quot;! &quot; ); } </li></ul>php | caracterizare
  10. 10. <ul><li><?php </li></ul><ul><li>// umplem un tablou cu valori de la 1 la 10 </li></ul><ul><li>for ($contor = 1; $contor <= 10; $contor++) { </li></ul><ul><li>$valori[$contor] = $contor; </li></ul><ul><li>} </li></ul><ul><li>// realizam suma valorilor </li></ul><ul><li>$suma = 0; </li></ul><ul><li>foreach ($valori as $element) </li></ul><ul><li>$suma += $element; </li></ul><ul><li>// afisam suma obtinute la iesirea standard </li></ul><ul><li>// pentru a fi trimisa browserului </li></ul><ul><li>echo (&quot;<p>Suma de la 1 la 10 este: <em>&quot; . $suma . &quot;</em></p>&quot;); </li></ul><ul><li>?> </li></ul>php | caracterizare
  11. 11. php | caracterizare <ul><li>Invocarea (rularea) programului PHP direct din linia de comanda: </li></ul><ul><ul><li>Salvam codul intr-un fisier text .php valori.php </li></ul></ul><ul><ul><li>Apelam interpretorul PHP din linia de comanda </li></ul></ul>
  12. 12. php | caracterizare <ul><li>Invocarea (rularea) programului PHP folosind tehnologiile Web: </li></ul><ul><ul><li>Plasam fisierul intr-un director al serverului Web </li></ul></ul><ul><ul><li>Din browser, indicam URL-ul catre program pentru a-l invoca via HTTP </li></ul></ul>Rezultatul generat de script
  13. 13. <ul><li>Constante predefinite: PHP_VERSION , CHAR_MAX ,… </li></ul><ul><li>Operatori – ca si cei din limbajul C/Perl ( e.g. , concatenarea sirurilor cu “ . ”) </li></ul><ul><li>Functii-utilizator: function  trimite_mesaj ( $from=&quot;&quot;, $to=&quot;&quot;, $subject=&quot;Web&quot;)  { // corp… } </li></ul>php | caracterizare Parametri cu valori implicite
  14. 14. <ul><li><?php </li></ul><ul><li>function patrat ($numar) { // functia de ridicare la patrat </li></ul><ul><li>return $numar * $numar; </li></ul><ul><li>} </li></ul><ul><li>$numar = 0; </li></ul><ul><li>while ($numar < 10) { </li></ul><ul><li>$numar++; // incrementam numarul </li></ul><ul><li>if ($numar % 2) // e numar impar... </li></ul><ul><li>continue ; // continuam cu urmatoarea iteratie </li></ul><ul><li>// e numar par, deci afisam patratul </li></ul><ul><li>echo &quot;<p>$numar la patrat este &quot; . patrat($numar) . &quot;</p>&quot;; </li></ul><ul><li>} // final de while </li></ul><ul><li>?> </li></ul>php | caracterizare
  15. 15. <ul><li>Functii predefinite ( built-in ): </li></ul><ul><ul><li>matematice </li></ul></ul><ul><ul><li>de conversie </li></ul></ul><ul><ul><li>de manipulare a sirurilor de caractere </li></ul></ul><ul><ul><li>de prelucrare a tablourilor </li></ul></ul><ul><ul><li>de acces la resurse si de lucru cu fisiere </li></ul></ul><ul><ul><li>de manipulare a bazelor de date </li></ul></ul><ul><ul><li>privitoare la conexiunile de retea </li></ul></ul><ul><ul><li>pentru accesarea resurselor XML, PDF, JPEG,... </li></ul></ul><ul><ul><li>specifice sistemului de operare </li></ul></ul><ul><ul><li>generale </li></ul></ul>php | caracterizare
  16. 16. <ul><li>Functii predefinite ( built-in ): </li></ul><ul><ul><li>matematice </li></ul></ul><ul><ul><ul><li>abs(), mod(), fmod() </li></ul></ul></ul><ul><ul><ul><li>ceil(), floor(), round(), max(), min() </li></ul></ul></ul><ul><ul><ul><li>exp(), log10(), log() </li></ul></ul></ul><ul><ul><ul><li>pow(), sqrt() </li></ul></ul></ul><ul><ul><ul><li>sin(), cos(), tan(), asin(), …, sinh(), …, pi() </li></ul></ul></ul><ul><ul><ul><li>rand(), srand() </li></ul></ul></ul><ul><ul><ul><li>bindec(), octdec(), dechex(),…, base_convert() </li></ul></ul></ul><ul><ul><ul><li>is_finite(), is_infinite(), is_nan() </li></ul></ul></ul>php | caracterizare
  17. 17. <ul><li>Functii predefinite ( built-in ): </li></ul><ul><ul><li>de manipulare a sirurilor de caractere </li></ul></ul><ul><ul><ul><li>echo(), print(), printf(), sprintf() etc. </li></ul></ul></ul><ul><ul><ul><li>strlen(), chr(), ord(), substr(), strstr(), strpos(),… </li></ul></ul></ul><ul><ul><ul><li>strcmp(), strcasecmp(), strnatcmp() etc. </li></ul></ul></ul><ul><ul><ul><li>strcat(), str_repeat(), str_replace(), str_ireplace(), strrev() </li></ul></ul></ul><ul><ul><ul><li>trim(), ltrim(), rtrim() </li></ul></ul></ul><ul><ul><ul><li>explode(), implode(), split(), join(), strtok() </li></ul></ul></ul><ul><ul><ul><li>nl2br(), htmlentities(), htmlspecialchars(), strip_tags(),… </li></ul></ul></ul>php | caracterizare
  18. 18. <ul><li>Functii predefinite ( built-in ): </li></ul><ul><ul><li>de manipulare a tablourilor </li></ul></ul><ul><ul><ul><li>array_count_values(), array_search(), array_filter(), array_slice(), array_chunk() </li></ul></ul></ul><ul><ul><ul><li>array_fill(), array_combine(), array_shift(), array_reverse(), array_multisort(), array_sum(),… </li></ul></ul></ul><ul><ul><ul><li>array_merge(), array_intersect(), array_diff() </li></ul></ul></ul><ul><ul><ul><li>array_keys(), array_key_exists() </li></ul></ul></ul><ul><ul><ul><li>array_push(), array_pop() </li></ul></ul></ul>php | caracterizare
  19. 19. <ul><li>Functii predefinite ( built-in ): </li></ul><ul><ul><li>de manipulare a caracterelor </li></ul></ul><ul><ul><ul><li>ctype_digit(), ctype_xdigit(), ctype_print(), ctype_punct(), ctype_space(),… </li></ul></ul></ul><ul><ul><ul><li>ctype_alpha(), ctype_alnum(), ctype_lower(), ctype_upper() </li></ul></ul></ul>php | caracterizare
  20. 20. <ul><li>Functii predefinite ( built-in ): </li></ul><ul><ul><li>privitoare la timp & data </li></ul></ul><ul><ul><ul><li>getdate(), localtime(), gettimeofday(), time() etc. </li></ul></ul></ul><ul><ul><ul><li>date(), idate(), gmdate(),… </li></ul></ul></ul><ul><ul><ul><li>checkdate() </li></ul></ul></ul><ul><ul><ul><li>strftime(), strtotime() </li></ul></ul></ul>php | caracterizare
  21. 21. <ul><li>Functii predefinite ( built-in ): </li></ul><ul><ul><li>privitoare la fisiere/directoare </li></ul></ul><ul><ul><ul><li>Folosind tipul de date FILE: fopen(), fread(), fscanf(), fgets(), fwrite(), fprintf(), fseek(), ftell(), feof(), fclose(), ftruncate(), fstat(), flock() </li></ul></ul></ul><ul><ul><ul><li>file(), copy(), rename(), delete(), move_uploaded_file(), tmpfile() </li></ul></ul></ul><ul><ul><ul><li>file_exists(), filesize(), filetype(), fileperms(),…, stat() </li></ul></ul></ul><ul><ul><ul><li>is_dir(), is_file(), is_readable(), is_writeable(),… </li></ul></ul></ul><ul><ul><ul><li>chdir(), mkdir(), rmdir() </li></ul></ul></ul><ul><ul><ul><li>disk_free_space(), disk_total_space() </li></ul></ul></ul>php | caracterizare
  22. 22. <ul><li>Functii predefinite ( built-in ): </li></ul><ul><ul><li>de manipulare a URL-urilor </li></ul></ul><ul><ul><ul><li>urldecode(), urlencode(), parse_url() </li></ul></ul></ul><ul><ul><ul><li>base64_decode(), base64_encode() </li></ul></ul></ul><ul><ul><li>privitoare la variabilele PHP </li></ul></ul><ul><ul><ul><li>is_bool(), is_int(), is_float(),…, is_array(), is_null(), is_resource(), is_scalar(), is_string() </li></ul></ul></ul><ul><ul><ul><li>gettype(), settype() </li></ul></ul></ul><ul><ul><ul><li>empty(), isset(), unset() </li></ul></ul></ul><ul><ul><ul><li>strval(), print_r(), var_dump() </li></ul></ul></ul><ul><ul><ul><li>serialize(), unserialize() </li></ul></ul></ul>php | caracterizare
  23. 23. <ul><li>Alte facilitati: </li></ul><ul><ul><li>SPL ( Standard PHP Library ) – acces la metode standard de prelucrare a datelor </li></ul></ul><ul><ul><li>Rularea din linie de comanda: PHP CLI ( Command Line Interface ) sau ca modul Apache </li></ul></ul><ul><ul><li>Crearea de interfete grafice (aplicatii desktop ): PHP-GTK – http://gtk.php.net/ </li></ul></ul><ul><ul><li>Inter-conectivitatea cu alte platforme (COM, Flash, Java, .NET,) </li></ul></ul><ul><ul><li>Suport pentru Internet/Web (FTP, HTTP, IMAP, LDAP, NNTP, POP3, SNMP, SOAP, XML-RPC ) </li></ul></ul>php | caracterizare
  24. 24. <ul><li>Datele transmite de client (browser) se regasesc in tablouri asociative predefinite (si globale): </li></ul><ul><ul><li>$_GET[] – datele transmise prin GET </li></ul></ul><ul><ul><li>$_POST[] – datele transmise prin POST </li></ul></ul><ul><ul><li>$_COOKIE[] – cookie -urile receptate </li></ul></ul><ul><ul><li>$_REQUEST[] – datele primite de la client (continutul lui $_GET , $_POST si $_COOKIE ) </li></ul></ul><ul><ul><li>$_SESSION[] – datele de tip sesiune </li></ul></ul>php | interactiune web
  25. 25. <ul><li>Alte variabile globale utile: </li></ul><ul><ul><li>$_SERVER[] – datele oferite de serverul Web </li></ul></ul><ul><ul><ul><li>$_SERVER['PHP_SELF'] numele scriptului PHP </li></ul></ul></ul><ul><ul><li>$_ENV[] – datele oferite de mediu ( environment ) </li></ul></ul><ul><ul><li>$_FILES[] – datele despre fisierele primite prin upload </li></ul></ul>php | interactiune web
  26. 26. <ul><li>Formularul Web: </li></ul><ul><li><form action=&quot; afiseaza.php &quot; method=&quot;post&quot;> </li></ul><ul><li><input type=&quot;text&quot; name=&quot; nume &quot; /> </li></ul><ul><li><input type=&quot;text&quot; name=&quot;virsta&quot; /> </li></ul><ul><li><input type=&quot;submit“ value=&quot;Trimite&quot; /> </li></ul><ul><li></form> </li></ul><ul><li>Scriptul afiseaza.php : </li></ul><ul><li><?php if (!$_REQUEST[&quot; nume &quot;]) { </li></ul><ul><li>?> </li></ul><ul><li><p style=&quot;color: red&quot;>Nu ati specificat numele!</p> </li></ul><ul><li><?php } else { </li></ul><ul><li>echo (“Numele este “ . $_REQUEST[“ nume ”]); </li></ul><ul><li>} </li></ul><ul><li>?> </li></ul>php | interactiune web
  27. 27. <ul><li>Programare obiectuala – incapsularea </li></ul><ul><ul><li><?php </li></ul></ul><ul><ul><li>class Student { // specificarea unei clase </li></ul></ul><ul><ul><li>var $ an ; </li></ul></ul><ul><ul><li>var $ nume ; </li></ul></ul><ul><ul><li>var $ email ; </li></ul></ul><ul><ul><li>// metode </li></ul></ul><ul><ul><li>function seteazaAn ($un_an) { $this->an = $un_an; } </li></ul></ul><ul><ul><li>function furnizeazaAn () { return $this->an; } </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>$stud = new Student ; // instantierea unui obiect </li></ul></ul><ul><ul><li>?> </li></ul></ul>php | obiecte Se pot accesa direct, nefiind privati in PHP4
  28. 28. <ul><li>Programare obiectuala – mostenirea </li></ul><ul><ul><li>class StudentDestept extends Student { </li></ul></ul><ul><ul><li>var $ note ; // notele obtinute (data membru) </li></ul></ul><ul><ul><li>// metode </li></ul></ul><ul><ul><li>function seteazaNote ($n) { $this->note = (array) $n; } </li></ul></ul><ul><ul><li>function furnizeazaNote () { return (array) $this->note; } </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>$alt_stud = new StudentDestept; </li></ul></ul><ul><ul><li>$alt_stud-> seteazaAn (2); // apel de metodă din clasa de bază </li></ul></ul><ul><ul><li>$alt_stud-> seteazaNote ($niste_note); // apel de metodă din clasa derivată </li></ul></ul>php | obiecte
  29. 29. <ul><li>Programare obiectuala – constructori </li></ul><ul><ul><li>class Student { </li></ul></ul><ul><ul><li>var $an, $nume, $email; // date-membru </li></ul></ul><ul><ul><li>function Student ($a, $n, $e = '') { // constructor </li></ul></ul><ul><ul><li>$this->an = $a; </li></ul></ul><ul><ul><li>$this->nume = $n; </li></ul></ul><ul><ul><li>$this->email = $e; </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>// alte metode… </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>$stud = new Student (2, &quot;Cristian Vrabie&quot;); </li></ul></ul><ul><li>Destructori nu exista in PHP 4 </li></ul>php | obiecte
  30. 30. <ul><li>Functii de manipulare a claselor si obiectelor </li></ul><ul><ul><li>get_class() va returna numele unui obiect, instanţă a unei clase </li></ul></ul><ul><ul><li>get_parent_class() furnizează clasa părinte din care provine un anumit obiect </li></ul></ul><ul><ul><li>method_exists() testează dacă există o metodă pentru un anumit obiect specificat </li></ul></ul><ul><ul><li>class_exists() testează existenţa unei clase </li></ul></ul><ul><ul><li>is_subclass_of() va determina existenţa unei relaţii de moştenire dintre două clase </li></ul></ul>php | obiecte
  31. 31. <ul><li>Programare obiectuala – PHP 5 </li></ul><ul><ul><li>Constructorii sunt numiti __construct() </li></ul></ul><ul><ul><li>Destructorii sunt denumiti __destruct() </li></ul></ul><ul><ul><li>Accesul la clasa parinte parent:: </li></ul></ul><ul><ul><li>Membrii pot fi publici ( public ), privati ( private ) sau protejati ( protected ) </li></ul></ul><ul><ul><li>Se permit clase/metode abstracte: abstract </li></ul></ul><ul><ul><li>Obiectele pot fi “clonate” via clone </li></ul></ul><ul><ul><li>Obiectele pot fi comparate folosind === </li></ul></ul><ul><ul><li>Pot fi declarate si interfete (in stilul Java) </li></ul></ul><ul><ul><li>Se permite si introspectia via clasa Reflection </li></ul></ul>php | obiecte
  32. 32. <ul><li>Programare obiectuala – PHP 5 </li></ul><ul><li>class Student { // clasa privitoare la un student </li></ul><ul><li>private $an; // date-membru (private/publice) </li></ul><ul><li>public $nume; </li></ul><ul><li>public $email; </li></ul><ul><li>// constructor (in stilul nou) </li></ul><ul><li>function __construct ($a = 1, $n = '', $e = '') { </li></ul><ul><li>$this->an = $a; </li></ul><ul><li>$this->nume = $n; </li></ul><ul><li>$this->email = $e; </li></ul><ul><li>} </li></ul><ul><li>function __destruct() { // destructor </li></ul><ul><li>print '<p>L-am distrus pe ' . $this->nume . '!</p>'; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>php | obiecte
  33. 33. <ul><li>Programare obiectuala – PHP 5 </li></ul><ul><li>// folosim introspectia </li></ul><ul><li>// cream o instanta a clasei predefinite ReflectionClass </li></ul><ul><li>$clasa = new ReflectionClass ('StudentDestept'); </li></ul><ul><li>// afisam informatii despre clasa specificata </li></ul><ul><li>printf(&quot;<p>Clasa <em>%s</em> extinde %s si e declarata in fisierul <tt>%s</tt>.</p>&quot;, $clasa-> getName (), var_export ($clasa-> getParentClass (), 1), $clasa-> getFileName () </li></ul><ul><li>); </li></ul>php | obiecte
  34. 34. <ul><li>Apache2Triad , EasyPHP & XAMPP – medii pre-configurate de dezvoltare Web (Apache, PHP, MySQL,…) </li></ul><ul><li>PHPMyAdmin – aplicatie Web scrisa in PHP pentru administrarea facila a bazelor de date MySQL </li></ul><ul><li>Smarty – faciliteaza realizarea de template -uri de redare a continutului Web </li></ul><ul><li>PEAR ( PHP Extension and Application Repository ) – clase/module care extind functionalitatile PHP: http://pear.php.net/ </li></ul><ul><li>PHP Designer – editor Web avansat </li></ul><ul><li>Zend Studio – platforma comerciala de dezvoltare a aplicatiilor PHP de anvergura </li></ul><ul><li>PRADO – framework PHP5 permitind interactiuni Web conduse de evenimente in stilul .NET </li></ul><ul><li>JPSpan & Xajax – framework -uri PHP pentru AJAX </li></ul>php | instrumente
  35. 35. <ul><li>T. Anghel, Programarea in PHP , Polirom, 2005 </li></ul><ul><li>S. Buraga (coord.), Aplicatii Web la cheie , Polirom, 2003 </li></ul><ul><li>S. Buraga (coord.), Situri Web la cheie , Polirom, 2004 </li></ul><ul><li>S. Buraga, Tehnologii XML , Polirom, 2006 </li></ul><ul><li>L. Alboaie, S. Buraga, Servicii Web , Polirom, 2006 </li></ul>resurse
  36. 36. <ul><li>Situl PHP oficial : www.php.net/ </li></ul><ul><li>PHP Builder : www.phpbuilder.com/ </li></ul><ul><li>PHP Classes : www.phpclasses.org/ </li></ul><ul><li>PHP Developer : www.phpdeveloper.org/ </li></ul><ul><li>PHP Freaks : www.phpfreaks.com/ </li></ul><ul><li>Zend : www.zend.com/ </li></ul>resurse
  37. 37. <ul><li>PHP ( PHP: Hypertext Preprocessor ) </li></ul><ul><ul><li>Evolutie </li></ul></ul><ul><ul><li>Caracterizare </li></ul></ul><ul><ul><li>Programare obiectuala in PHP </li></ul></ul><ul><ul><li>Interactiunea cu utilizatorul </li></ul></ul><ul><ul><li>Instrumente & resurse </li></ul></ul>rezumat
  38. 38. <ul><li>Intrebari…? </li></ul>

×