Sunteți pe pagina 1din 38

Tehnologii Web 2007

Programare Web
PHP prezentare generala
Dr. Sabin-Corneliu Buraga
Facultatea de Informatica
Universitatea A.I.Cuza Iasi, Romania

http://www.infoiasi.ro/~busaco/

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

Tehnologii Web 2007

cuprins
PHP (PHP: Hypertext Preprocessor)
Evolutie
Caracterizare
Interactiunea cu utilizatorul
Programare obiectuala in PHP
Instrumente & resurse

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

Tehnologii Web 2007

php | istoric
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)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

Tehnologii Web 2007

php | caracterizare
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)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

Tehnologii Web 2007

php | caracterizare
Maniera de functionare a procesorului
(engine-ului) PHP

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

Tehnologii Web 2007

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

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

De f

olos
it

Tehnologii Web 2007

php | caracterizare
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"); %>

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

Tehnologii Web 2007

php | caracterizare
Variabile create din zbor
Tipuri scalare: integer, double, boolean, string
Tipuri complexe:
tablouri (indexate/asociative) & obiecte
Tipuri speciale: resursa, referinta, nul (NULL)
$ani = 33;
$conectat = TRUE;
$prefer["culoare"] = "gri";

/* o variabila obisnuita */
# variabila logica
// tablou asociativ

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

Tehnologii Web 2007

php | caracterizare
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");
}

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

Tehnologii Web 2007

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 ("<p>Suma de la 1 la 10 este: <em>" . $suma . "</em></p>");
?>

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

10

Tehnologii Web 2007

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

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

11

Tehnologii Web 2007

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


Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

12

Tehnologii Web 2007

php | caracterizare
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

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

13

Tehnologii Web 2007

php | caracterizare
<?php
function patrat ($numar) { // functia de ridicare la patrat
return $numar * $numar;
}
$numar = 0;
while ($numar < 10) {
$numar++;
// incrementam numarul
if ($numar % 2)
continue;

// e numar impar...
// continuam cu urmatoarea iteratie

// e numar par, deci afisam patratul


echo "<p>$numar la patrat este " . patrat($numar) . "</p>";
} // final de while
?>
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

14

Tehnologii Web 2007

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

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

15

Tehnologii Web 2007

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()

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

16

Tehnologii Web 2007

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(),

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

17

Tehnologii Web 2007

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()

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

18

Tehnologii Web 2007

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()

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

19

Tehnologii Web 2007

php | caracterizare
Functii predefinite (built-in):
privitoare la timp & data

getdate(), localtime(), gettimeofday(), time() etc.


date(), idate(), gmdate(),
checkdate()
strftime(), strtotime()

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

20

Tehnologii Web 2007

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()

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

21

Tehnologii Web 2007

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()
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

22

Tehnologii Web 2007

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)

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

23

Tehnologii Web 2007

php | interactiune web


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
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

24

Tehnologii Web 2007

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

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

25

Tehnologii Web 2007

php | interactiune web


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]);
}
?>
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

26

Tehnologii Web 2007

php | obiecte
Programare obiectuala incapsularea
<?php
class Student { // specificarea unei clase
var $an;
Se pot accesa direct,
var $nume;
nefiind privati in PHP4
var $email;
// metode
function seteazaAn ($un_an) { $this->an = $un_an; }
function furnizeazaAn () { return $this->an; }
}
$stud = new Student; // instantierea unui obiect
?>

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

27

Tehnologii Web 2007

php | obiecte
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

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

28

Tehnologii Web 2007

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, "Cristian Vrabie");

Destructori nu exista in PHP 4


Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

29

Tehnologii Web 2007

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 printe
din care provine un anumit obiect
method_exists() testeaz dac exist o metod
pentru un anumit obiect specificat
class_exists() testeaz existena unei clase
is_subclass_of() va determina existena
unei relaii de motenire dintre dou clase

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

30

Tehnologii Web 2007

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

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

31

Tehnologii Web 2007

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>';
}
}

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

32

Tehnologii Web 2007

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("<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()
);

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

33

Tehnologii Web 2007

php | instrumente
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

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

34

Tehnologii Web 2007

resurse
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

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

35

Tehnologii Web 2007

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/

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

36

Tehnologii Web 2007

rezumat

PHP (PHP: Hypertext Preprocessor)


Evolutie
Caracterizare
Programare obiectuala in PHP
Interactiunea cu utilizatorul
Instrumente & resurse

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

37

Tehnologii Web 2007

Intrebari?

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

38