Documente Academic
Documente Profesional
Documente Cultură
Programare Web
PHP prezentare generala
Dr. Sabin-Corneliu Buraga
Facultatea de Informatica
Universitatea A.I.Cuza Iasi, Romania
http://www.infoiasi.ro/~busaco/
cuprins
PHP (PHP: Hypertext Preprocessor)
Evolutie
Caracterizare
Interactiunea cu utilizatorul
Programare obiectuala in PHP
Instrumente & resurse
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)
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)
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
De f
olos
it
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"); %>
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
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");
}
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>");
?>
10
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
11
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
12
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
13
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
14
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
15
php | caracterizare
Functii predefinite (built-in):
matematice
16
php | caracterizare
Functii predefinite (built-in):
de manipulare a sirurilor de caractere
17
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()
18
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()
19
php | caracterizare
Functii predefinite (built-in):
privitoare la timp & data
20
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()
21
php | caracterizare
Functii predefinite (built-in):
de manipulare a URL-urilor
urldecode(), urlencode(), parse_url()
base64_decode(), base64_encode()
22
php | caracterizare
Alte facilitati:
23
24
25
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
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
?>
27
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
28
php | obiecte
Programare obiectuala constructori
class Student {
var $an, $nume, $email;
// date-membru
}
$stud = new Student (2, "Cristian Vrabie");
29
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
30
php | obiecte
Programare obiectuala PHP 5
31
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>';
}
}
32
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()
);
33
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
34
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
35
resurse
36
rezumat
37
Intrebari?
38