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

More Related Content

PPT
Programare Web - Arhitectura WWW
PPT
Programare Web - De la CGI la servere de aplicatii
PPT
Programare Web - Accesul la baze de date prin PHP
PPT
Programare Web - Cookie-uri si sesiuni
PDF
Web 2016 (04/13) Programare Web – Dezvoltarea aplicațiilor Web în PHP
PDF
Web 2016 (05/13) Programare Web – Dezvoltarea aplicațiilor Web via Node.js
PDF
HTML5 în XXX de minute
PDF
HTML5? HTML5!
Programare Web - Arhitectura WWW
Programare Web - De la CGI la servere de aplicatii
Programare Web - Accesul la baze de date prin PHP
Programare Web - Cookie-uri si sesiuni
Web 2016 (04/13) Programare Web – Dezvoltarea aplicațiilor Web în PHP
Web 2016 (05/13) Programare Web – Dezvoltarea aplicațiilor Web via Node.js
HTML5 în XXX de minute
HTML5? HTML5!

What's hot (20)

PDF
Node.js: aspecte esențiale
PDF
CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5
PDF
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
PDF
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
PDF
O lectie de anatomie Web. Disectia unui document HTML
PDF
Foi de stiluri CSS – concepte esențiale (...și puțin mai mult)
PDF
Căutarea resurselor Web
PDF
Suita de tehnologii HTML5
PDF
Cu codul în "nori"
PDF
Web 2020 09/12: Servicii Web. Paradigma REST
PDF
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
PDF
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
PDF
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
PDF
CLIW 2015-2016 (10/13) Programare Web. Suita de tehnologii HTML5
PDF
CLIW 2015-2016 (13/13) Perspective Web la nivel de client. Limbajul ES6
PDF
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
PDF
Limbajul JavaScript: o prezentare generală
PDF
CLIW 2015-2016 (8/13) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
PPTX
PDF
Modelarea datelor via XML. Design patterns in contextul specificarii document...
Node.js: aspecte esențiale
CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
O lectie de anatomie Web. Disectia unui document HTML
Foi de stiluri CSS – concepte esențiale (...și puțin mai mult)
Căutarea resurselor Web
Suita de tehnologii HTML5
Cu codul în "nori"
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
CLIW 2015-2016 (10/13) Programare Web. Suita de tehnologii HTML5
CLIW 2015-2016 (13/13) Perspective Web la nivel de client. Limbajul ES6
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Limbajul JavaScript: o prezentare generală
CLIW 2015-2016 (8/13) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
Modelarea datelor via XML. Design patterns in contextul specificarii document...
Ad

Viewers also liked (17)

PDF
AJAX - back to the future
PDF
Lecture3 - PC
PDF
Lecture1 pc
PDF
Lecture2 - PC
PDF
Lecture5 - PC
PPTX
Prezentare powerpoint
PDF
The Zen Aesthetic
PDF
What's killing your brand? (And how to kill it before it kills you.) by David...
PDF
BROKEN MEETINGS (and how you'll fix them)
PDF
Sketchnotes / Visual Note Taking @ WebExpo Prague 2010
PPT
PPT
Php Presentation
PPTX
Tips on How to Pitch
KEY
Ten Things CEOs Need to Know About Design
PDF
Leading Without Seeing: managing distributed teams
PDF
SMOKE - The Convenient Truth [1st place Worlds Best Presentation Contest] by ...
PDF
Death by PowerPoint
AJAX - back to the future
Lecture3 - PC
Lecture1 pc
Lecture2 - PC
Lecture5 - PC
Prezentare powerpoint
The Zen Aesthetic
What's killing your brand? (And how to kill it before it kills you.) by David...
BROKEN MEETINGS (and how you'll fix them)
Sketchnotes / Visual Note Taking @ WebExpo Prague 2010
Php Presentation
Tips on How to Pitch
Ten Things CEOs Need to Know About Design
Leading Without Seeing: managing distributed teams
SMOKE - The Convenient Truth [1st place Worlds Best Presentation Contest] by ...
Death by PowerPoint
Ad

Similar to Programare Web - PHP (o prezentare generala) (20)

PDF
48892700 invatam-php
PDF
PDF
Limbajul PHP_Ghid_Eugeniu Gârlă2024g.pdf
PPT
Lucrul cu fisiere php
PPTX
06 php instalation_ro
PPTX
Prezentare
PPTX
Prezentare1
PPTX
Pptpw
PPT
Irina Cureraru
PPTX
Proiect Programare WEB
PPT
Felicitari personalizate
PPTX
Pptpw
PPTX
Proiect Programare WEB
PPTX
PPTX
PPTX
PPT
Proiect Programare Web
PDF
Cum instaleziapachesimysql peraspberrypi
PPT
OOP din perspectiva PHP 5
DOC
Studiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHP
48892700 invatam-php
Limbajul PHP_Ghid_Eugeniu Gârlă2024g.pdf
Lucrul cu fisiere php
06 php instalation_ro
Prezentare
Prezentare1
Pptpw
Irina Cureraru
Proiect Programare WEB
Felicitari personalizate
Pptpw
Proiect Programare WEB
Proiect Programare Web
Cum instaleziapachesimysql peraspberrypi
OOP din perspectiva PHP 5
Studiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHP

More from Sabin Buraga (20)

PDF
Web 2020 01/12: World Wide Web – aspecte arhitecturale
PDF
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
PDF
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
PDF
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
PDF
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
PDF
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
PDF
STAW 01/12: Arhitectura aplicaţiilor Web
PDF
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
PDF
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
PDF
STAW 04/12: Programare Web: Node.js
PDF
STAW 05/12: Arhitectura navigatorului Web
PDF
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
PDF
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
PDF
STAW 08/12: Programare Web. Suita de tehnologii HTML5
PDF
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
PDF
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
PDF
STAW 11/12: Performanţa aplicaţiilor Web la nivel de client
PDF
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
PDF
Sabin Buraga: Dezvoltator Web?! (2019)
PDF
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
STAW 01/12: Arhitectura aplicaţiilor Web
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 04/12: Programare Web: Node.js
STAW 05/12: Arhitectura navigatorului Web
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
Sabin Buraga: Dezvoltator Web?! (2019)
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...

Programare Web - PHP (o prezentare generala)

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