Programare Web - PHP (o prezentare generala)
-
Upload
sabin-buraga -
Category
Technology
-
view
9.805 -
download
7
description
Transcript of Programare Web - PHP (o prezentare generala)
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
1
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
Programare WebProgramare WebPHP – prezentare generalaPHP – prezentare generala
Dr. Sabin-Corneliu BuragaFacultatea de Informatica
Universitatea “A.I.Cuza” – Iasi, Romania
http://www.infoiasi.ro/~busaco/
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
2
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• PHP (PHP: Hypertext Preprocessor)– Evolutie– Caracterizare– Interactiunea cu utilizatorul– Programare obiectuala in PHP– Instrumente & resurse
cuprinscuprins
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
3
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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 | istoricphp | istoric
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
4
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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 | caracterizarephp | caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
5
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Maniera de functionare a procesorului (engine-ului) PHP
php | caracterizarephp | caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
6
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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 | caracterizarephp | caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
7
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Scripturi PHP introduse prin:
<? echo ("Salut! \n"); /* simplu, nu? */ ?>
<?php echo("In cazul documentelor XML.\n");
?>
<script language="php"> echo ("...");</script>
<% echo ("Tag-uri in stilul ASP"); %>
php | caracterizarephp | caracterizare
De
folo
sit
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
8
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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["culoare"] = "gri"; // tablou asociativ
php | caracterizarephp | caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
9
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Structuri de control – similare celor din C (if, switch, while, do, for, break, continue)
if (!$nume) { echo ("Nu ati precizat numele!"); } else { echo ("Bine ai venit, " . $nume . "!\n"); }
php | caracterizarephp | caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
10
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
<?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 ("<p>Suma de la 1 la 10 este: <em>" . $suma . "</em></p>");?>
php | caracterizarephp | caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
11
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
php | caracterizarephp | 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
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
12
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
php | caracterizarephp | 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 scriptRezultatul generat de script
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
13
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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="", $to="", $subject="Web") { // corp… }
Parametri cu valori implicite
php | caracterizarephp | caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
14
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
<?phpfunction 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 "<p>$numar la patrat este " . patrat($numar) . "</p>"; } // final de while?>
php | caracterizarephp | caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
15
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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 | caracterizarephp | caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
16
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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 | caracterizarephp | caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
17
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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 | caracterizarephp | caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
18
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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 | caracterizarephp | caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
19
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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 | caracterizarephp | caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
20
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Functii predefinite (built-in):– privitoare la timp & data
• getdate(), localtime(), gettimeofday(), time() etc.
• date(), idate(), gmdate(),…• checkdate() • strftime(), strtotime()
php | caracterizarephp | caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
21
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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 | caracterizarephp | caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
22
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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 | caracterizarephp | caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
23
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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 | caracterizarephp | caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
24
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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 webphp | interactiune web
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
25
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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 webphp | interactiune web
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
26
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Formularul Web:<form action="afiseaza.php" method="post"> <input type="text" name="nume" /> <input type="text" name="virsta" /> <input type="submit“ value="Trimite" /> </form> • Scriptul afiseaza.php:<?php if (!$_REQUEST["nume"]) {?> <p style="color: red">Nu ati specificat numele!</p> <?php } else { echo (“Numele este “ . $_REQUEST[“nume”]); }?>
php | interactiune webphp | interactiune web
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
27
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Programare obiectuala – incapsularea<?phpclass 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 ?>
Se pot accesa direct, nefiind privati in PHP4
php | obiectephp | obiecte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
28
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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 | obiectephp | obiecte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
29
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Programare obiectuala – constructoriclass 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, "Cristian Vrabie");
• Destructori nu exista in PHP 4
php | obiectephp | obiecte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
30
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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 | obiectephp | obiecte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
31
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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 | obiectephp | obiecte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
32
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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 | obiectephp | obiecte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
33
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Programare obiectuala – PHP 5// folosim introspectia// cream o instanta a clasei predefinite ReflectionClass$clasa = new ReflectionClass ('StudentDestept');// afisam informatii despre clasa specificataprintf("<p>Clasa <em>%s</em> extinde %s si
e declarata in fisierul <tt>%s</tt>.</p>", $clasa->getName(), var_export ($clasa->getParentClass(), 1), $clasa->getFileName()
);
php | obiectephp | obiecte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
34
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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 | instrumentephp | instrumente
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
35
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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
resurseresurse
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
36
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• 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/
resurseresurse
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
37
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• PHP (PHP: Hypertext Preprocessor)– Evolutie– Caracterizare– Programare obiectuala in PHP– Interactiunea cu utilizatorul– Instrumente & resurse
rezumatrezumat
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
38
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
Intrebari…?