D veloppement Web
Pr par par : Tarek BEN MENA
3 me ann e Science de lInformatique
TBM 2014-15
page 1
Plan
l/ 1- Introduction G n rale
l/ 2- Web Statique
/HTML, XHTML, DOM
/CSS
/Javascript et Ajax
l/ 3- Web Dynamique
/PHP
/PHP orient -objet
l/ 4- Le mod le MVC
TBM 2014-15
page 2
Objectifs
l/ Revisiter PHP et les fonctionnalit s associ es au langage
dans le cadre du d veloppement Web
/Fonctionnalit s de base du langage
/acc s aux bases de donn es (PDO)
/la couche objet (classe, h ritage, r flexion, ...)
l/ Plan
/Le langage PHP
/La couche Objet PHP
/R cup ration des donn es des formulaires
/Acc s aux bases de donn es
/Utilisation des sessions
TBM 2014-15
page 3
Le langage PHP
TBM 2014-15
page 4
Caract ristiques du langage
l/ PHP (Hypertext Processor) est un langage de script
(interpr t )
l/ Cr en 1994 par Rasmus Lerdorf
l/ Simple dutilisation
l/ Utilis pour produire facilement des pages web
dynamiques
l/ PHP est un langage imp ratif, disposant depuis la version
5 de fonctionnalit s objet
l/ Structure proche du langage C (if, for, while, ...)
l/ Absence de typage des variables les variables sont
identifi es par le symbole $ en pr fixe
l/ tableaux associatifs
TBM 2014-15
page 5
D bugage
l/ Manuellement Visuellement
/echo
/print_r(array) affiche un tableau
/var_dump(var) tout type de variable
l/ Niveau derreur
/error_reporting(int level) pour indiquer le niveau derreur qui sera signal
F/0 : aucune
F/E_ALL : toutes les erreurs
F/E_WARNING : les avertissements
F/E_ERROR : les erreurs
l/ Outils de d bugage
/Studio Zend (extension commerciale)
/DBG
/APD (advanced PHP Debugger)
/Xdebug (xdebug.org)
TBM 2014-15
page 6
Inclusion / Importation
l/ Pour faire r f rence des fonctions stock es dans
dautres fichiers on utilise lune des instructions
suivantes :
/include importer un fichier PHP sans g n rer derreur si le fichier
nexiste pas
/require g n re une erreur fatale an cas dabsence
/require_once importe une seule fois le fichier
TBM 2014-15
page 7
Constantes et Types de variable
l/ Constante
/On utilise le mot cl define afin de d finir une constante
"/ V rification du type de variable
Il existe un nombre important de
fonctions :
"/ Convertir
is_int(var) !
is_float(var) !
is_array(var) !
is_numeric(var) !
is_null(var) !
is_string(var) !
is_bool(var)
"/ strval(var) convertir en cha ne
de caract res
"/ intval(var) convertir en entier
"/ floatval(var) convertir en r el
"/ settype(var, type) fixer le
type (boolean, integer, float, string,
array)
TBM 2014-15
Publicité
page 8
Manipulation de chaines de caract res
l/ La cha ne de caract res (string) est limit e par la taille de
la m moire du syst me. Elle est introduite par :
/le symbole double quote : "une chaine
/ou le symbole simple quote : une autre chaine
l/ On peut acc der chaque caract re gr ce son indice,
le 1er caract re tant en position 0.
l/ Concat nation
/On utilise le point .
/Pour laffichage avec echo on peut utilis la virgule , qui ne r alise
pas la concat nation
TBM 2014-15
page 9
Longueur, position
l/ int strlen(string)!
/donne la longueur en nombre de caract res de la cha ne, on peut
utiliser la fonction empty pour tester si une cha ne est vide
l/ int strpos(string chn, string motif [, int pos])!
/donne la position de la cha ne motif dans chn en commen ant au
d but de la cha ne ou la position pos si elle est sp cifi e. Retourne
false si le motif nest pas trouv .
TBM 2014-15
page 10
Sous-cha ne
l/ string substr(string str, int start [, int
length])!
/retourne la sous-cha ne qui commence la position start et de
longueur maximale length.
/cas de length n gatif dans ce cas on ne retourne pas les length
derniers caract res
/Ex : echo substr("abcdef",2,-1) // affiche cde
l/ Suppression des caract res inutiles
/string trim(string, [, charlist]) supprime des caract res
(espaces) inutiles en d but et fin de cha ne lespace (ASCII 32), la
tabulation (ASCII 9), line feed (ASCII 10), cariage return (ASCII 13),
vertical tabulation (ASCII 11)
/ltrim supprime en d but de cha ne
/rtrim supprime en fin de cha ne
TBM 2014-15
page 11
Conversion
l/ Majuscule / minuscule
/string strtolower(string)
/string strtoupper(string)
/string ucfirst(string)
/string lcfirst(string)
/string ucwords(string)
l/ explode et implode
/explode d compose une cha ne suivant un motif de d coupe en un
tableau de cha nes
/implode r alise linverse et construit une cha ne partir de cha nes
dans un tableau
TBM 2014-15
page 12
Les tableaux associatifs
l/ D finition
/Le tableau est un mapping qui associe une cl et une valeur.
F/Par d faut la cl est une valeur enti re qui correspond lindice dans le
tableau
F/On peut galement utiliser des indices sous forme de cha ne de caract res
/Note : le tableau peut tre vu galement comme une liste, une pile ou
une table de hashage.
l/ Exemple
/D claration dun tableau
affiche
TBM 2014-15
page 13
Remplir un tableau
TBM 2014-15
page 14
Parcours d l ment
array_push : ajout en fin de tableau
array_pop : suppression en fin de tableau
array_unshift : ajout en d but de tableau
array_shift : suppression en d but de tableau
TBM 2014-15
page 15
Trier un tableau
TBM 2014-15
page 16
Somme et produit et recherche
TBM 2014-15
page 17
Fonctions tableau
l/ Il existe de nombreuses autres fonctions qui agissent sur
les tableaux :
/array_keys : Retourne toutes les cl s ou un ensemble des cl s d'un
tableau
/array_values : Retourne toutes les valeurs d'un tableau
/array_diff : Calcule la diff rence entre des tableaux
/array_intersect : Calcule l'intersection de tableaux
/array_merge : Fusionne plusieurs tableaux en un seul
/array_fill : Remplit un tableau avec une m me valeur
/array_flip : Remplace les cl s par les valeurs, et les valeurs par les cl s
/array_chunk : S pare un tableau en tableaux de taille inf rieure
/array_reduce : R duit it rativement un tableau
/Et beaucoup d autres ici : http://fr.php.net/manual/fr/book.array.php
TBM 2014-15
page 18
Publicité
Utilisation des expressions r guli res
l/ D finition (Expression r guli re)
/mod le permettant de d crire un ensemble de cha nes de caract res.
l/ Exemple
/ + un ensemble de lettres
/ n,m au moins n et au plus m lettres
/[0 9]+ un ensemble de chiffres
l/ Caract re sp ciaux
/| : ou
/^ : d but
/$ : fin
/? : la lettre est facultative. Elle peut y tre 0 ou 1 fois
/+ : la lettre est obligatoire. Elle peut appara tre 1 ou plusieurs fois.
/* : la lettre est facultative. Elle peut appara tre 0, 1 ou plusieurs fois.
/{i, j} : ici, on a plusieurs possibilit s. On peut avoir la lettre de i j fois.
TBM 2014-15
page 19
Exemples
TBM 2014-15
page 20
Expression r guli re : Exemple
l/ int preg_match ( string $pattern , string $subject [, array
&$matches])
/Pattern : Le masque chercher, sous la forme d'une cha ne de
caract res.
/Subject : La cha ne d'entr e.
/matches : Si matches est fourni, il sera rempli par les r sultats de la
recherche. $matches[0] contiendra le texte qui satisfait le masque
complet, $matches[1] contiendra le texte qui satisfait la premi re
parenth se capturante, etc.
TBM 2014-15
page 21
G rer les exceptions
l/ En PHP, on peut dor navant g rer les exceptions comme
en C++ :
TBM 2014-15
page 22
La couche Objet
TBM 2014-15
page 23
La couche objet
l/ On reprend les m mes principes que ceux utilis s en
Java
l/ Technologies
/la class permet dencapsuler les donn es et m thodes
/on d finit lacc s gr ce aux mots cl s : public, protected et private
/on peut d finir des donn es static
/pas dh ritage multiple : extends
/par d faut les m thodes sont surcharg es (pas de mot-cl virtual)
TBM 2014-15
page 24
Exemple
TBM 2014-15
page 25
classe abstraite, interface
l/ Diff rences entre classe abstraite et interface :
/une classe abstraite permet de d finir
F/des attributs
F/des m thodes (prototype + corps)
F/elle nest pas instanciable
/une interface ne d finit que des m thodes (prototype)
TBM 2014-15
page 26
H ritage
l/ Tout comme en Java :
l/ En PHP Objet, on ne peut pas crire :
/class C extends A,B
l/ car extends naccepte
quune seule classe h rit e
TBM 2014-15
page 27
H ritage
l/ Solution
l/ class A extends O !
!
!implements iA!
l/ class B extends O!
!
!implements iBclass !
l/ class C extends O !
!
!implements iA, iB!
TBM 2014-15
page 28
Attributs
l/ Les donn es membres sont r f renc es par le mot-cl
$this-> lint rieur de la classe.
TBM 2014-15
page 29
Attributs statiques
l/ Les donn es statiques sont r f renc es par le mot-cl
self::
TBM 2014-15
page 30
M thodes
l/ les m thodes sont introduites par le mot cl function
elles peuvent tre pr c d es dun des qualificatifs de
port e : public (par d faut), protected ou private.
TBM 2014-15
page 31
Publicité
M thode magique
l/ Il sagit de m thodes utilis es par PHP qui peuvent tre
red finies :
/__construct : appel constructeur
/__destruct : appel destructeur
/__call acc s des m thodes inaccessibles
/__callStatic acc s des m thodes inaccessibles dans un contexte
statique
/__get acc s en lecture des donn es membres inaccessibles
/__set acc s en criture des donn es membres inaccessibles
/__isset : appel de isset sur des donn es inaccessibles
/__unset appel de unset sur des donn es inaccessibles
/__sleep appel avant s rialisation
/__wakeup appel avant r cup ration des donn es s rialis es
/__toString conversion en cha ne de caract res
/__set_state appel pour les classes export es (var export)
/__clone cr e une copie de lobjet
TBM 2014-15
page 32
Exemple
TBM 2014-15
page 33
Constructeur et destructeur
l/ Constructeur et destructeur sont introduits par des
m thodes sp cifiques :
l/ Attention :
/Dans les versions ant rieures de PHP, le constructeur portait le nom de
la classe et il ny avait pas de destructeur.
l/ Construire une instance avec new
TBM 2014-15
page 34
H ritage
l/ On utilise le mot cl extends pour d clarer lh ritage et
parent:: pour faire r f rence la classe m re :
TBM 2014-15
page 35
Instanceof et is_subclass_of
l/ On utilise le mot cl instanceof afin de v rifier si une
variable est une instance de la classe sp cifi e :
l/ On utilise le mot cl is_subclass_of afin de v rifier si une
variable est une instance dune sous-classe :
TBM 2014-15
page 36
R flexion (Reflection)
l/ D finition (R flexion)
/Capacit de pouvoir conna tre ou examiner le contenu dun objet :
F/Donn es membres (attributs)
F/M thodes
/Depuis PHP 5, on dispose de classes et interfaces d di es la r flexion.
l/ R flexion simplifi e
/string get_class(object) permet dobtenir la classe dun objet
/string get_parent_class(object) retourne le nom de classe
parent de lobjet
/array get_class_vars(object) retourne les valeurs des attributs
dune classe
/array get_object_vars(object) r cup re les attributs non
statiques accessibles de lobjet
/array get_class methods(object) retourne les noms des
m thodes dune classe
TBM 2014-15
page 37
Exemple get_object_vars
On note que lutilisation de
get_object_vars en dehors de la
classe ne permet pas davoir acc s
aux donn es membres priv es ou
prot g es
TBM 2014-15
page 38
Reflection avec ReflectionClass
TBM 2014-15
page 39
Obtenir les donn es
dun Formulaire
TBM 2014-15
page 40
M thode POST et GET
l/ On r cup re les donn es du formulaire par
/$_POST sil sagit dun passage au format POST
/$_GET sil sagit dun passage au format GET
TBM 2014-15
page 41
Acc s aux Bases de Donn es
TBM 2014-15
page 42
MySQL - ouverture de la connexion
l/ On commence par tablir la connexion avec le serveur
MySQL :
l/ En php 4
l/ La variable link contient une ressource qui sera utilis e
pour r cup rer certaines informations
TBM 2014-15
page 43
MySQL
l/ Cr ation dune base de donn es
l/ S lection dun base de donn es
TBM 2014-15
page 44
MySQL Insertion / Suppression dun enregistrement
l/ On effectue une requ te dinsertion et on r cup re
Publicité
lidentifiant du nouvel enregistrement :
l/ On effectue une requ te de suppression gr ce lidentifiant :
TBM 2014-15
page 45
MySQL modifier un enregistrement
l/ On effectue une requ te de modification gr ce
lidentifiant :
TBM 2014-15
page 46
MySQL s lection des enregistrements
l/ On effectue une requ te de s lection des auteurs dont le
nom contient un K :
TBM 2014-15
page 47
PDO
TBM 2014-15
page 48
La couche PDO
l/ D finition
/PDO PHP Data Objects (PHP 5.1)
/PDO fournit une interface dabstraction lacc s de donn es
/utilisation des m mes fonctions pour ex cuter des requ tes ou
r cup rer les donn es quelque soit la base de donn es utilis e
l/ Les SGBD support s
/MySQL 3, 4, 5 (mysql)
/PostgreSQL (pg)
/SQLite 2, 3 (sqlite, SQLite3)
/ODBC
/Informix (ifx)
/Oracle (oci)
/Firebird/Interbase (ibase)
/FreeTDS/Sybase/MSSQL (sybase)
/&
TBM 2014-15
page 49
PDO - Ouverture de la base
l/ MySQL
l/ PostgreSQL
l/ Gestion des erreurs
/On dispose de deux fonctions pour r cup rer les informations suite
une erreur :
F/errorCode() retourne un identifiant alphanum rique de cinq caract res
d fini dans le standard ANSI SQL
F/errorInfo() retourne un tableau contenant des informations sur lerreur
survenue lors de la derni re op ration ex cut e
TBM 2014-15
page 50
PDO - S lection
l/ +ieurs possibilit s pour la r cup ration des donn es :
/tableau avec cl s num riques
/tableau avec cl s alphanum riques suivant nom du champ de la table
/deux premi res possibilit s
/au format objet
l/ Traitement avec cl num rique
TBM 2014-15
page 51
PDO - S lection
l/ Traitement sur champ
l/ Traitement sur indice et champ
TBM 2014-15
page 52
PDO-S lection
l/ Traitement sur objet
TBM 2014-15
page 53
PDO-S lection
l/ Traitement sur objet
TBM 2014-15
page 54
PDO-S lection
l/ Insertion dans un Objet
TBM 2014-15
page 55
PDO s lection : fetchAll
l/ La fonction fetchAll permet de r cup rer tous les
enregistrements.
TBM 2014-15
page 56
PDO Prepared Statement
l/ offre la possibilit dins rer des donn es en cascade.
TBM 2014-15
page 57
Session
TBM 2014-15
page 58
Session
l/ D finition (Session)
/une session est un espace de stockage permanent pendant la dur e
dune connexion.
/elle permet de sauvegarder des donn es et de pouvoir y acc der
quelque soit la page web.
/pour acc der aux variables de la session ou pour les enregistrer, on
utilise la variable globale $_SESSION.
TBM 2014-15
page 59
Utilisation des variable Session
TBM 2014-15
page 60