Développement Web

Computer Science · lab

Voir tous les documents en développement web

D veloppement Web

Pr par par : Tarek BEN MENA

[email protected]

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