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 l’Informatique

TBM 2014-15

page 1

Plan

  1- Introduction Générale   2- Web Statique

 HTML, XHTML, DOM  CSS  Javascript et Ajax   3- Web Dynamique

 PHP  PHP orienté-objet   4- Le modèle MVC

TBM 2014-15

page 2

Objectifs

  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, ...)

  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

  PHP (Hypertext Processor) est un langage de script

(interprété)

  Créé en 1994 par Rasmus Lerdorf   Simple d’utilisation   Utilisé pour produire facilement des pages web

dynamiques

  PHP est un langage impératif, disposant depuis la version

5 de fonctionnalités objet

  Structure proche du langage C (if, for, while, ...)   Absence de typage des variables les variables sont

identifiées par le symbole $ en préfixe

  tableaux associatifs

TBM 2014-15

page 5

Débugage

  Manuellement – Visuellement

 echo  print_r(array) affiche un tableau  var_dump(var) tout type de variable

  Niveau d’erreur

 error_reporting(int level) pour indiquer le niveau d’erreur qui sera signalé

 0 : aucune  E_ALL : toutes les erreurs  E_WARNING : les avertissements  E_ERROR : les erreurs

  Outils de débugage

 Studio Zend (extension commerciale)  DBG  APD (advanced PHP Debugger)  Xdebug (xdebug.org)

TBM 2014-15

page 6

Inclusion / Importation

  Pour faire référence à des fonctions stockées dans d’autres fichiers on utilise l’une des instructions suivantes :  include importer un fichier PHP sans générer d’erreur si le fichier

n’existe pas

 require génère une erreur fatale an cas d’absence  require_once importe une seule fois le fichier

TBM 2014-15

page 7

Constantes et Types de variable

  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

page 8

Manipulation de chaines de caractères

  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’

  On peut accéder à chaque caractère grâce à son indice,

le 1er caractère étant en position 0.

  Concaténation

 On utilise le point ‘.’  Pour l’affichage avec echo on peut utilisé la virgule ‘,’ qui ne réalise

pas la concaténation

TBM 2014-15

page 9

Longueur, position

  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

  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 n’est pas trouvé.

TBM 2014-15

page 10

Sous-chaîne

  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

  Suppression des caractères inutiles

 string trim(string, [, charlist]) supprime des caractères (espaces) inutiles en début et fin de chaîne l’espace ’ ’ (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

  Majuscule / minuscule  string strtolower(string)  string strtoupper(string)  string ucfirst(string)  string lcfirst(string)  string ucwords(string)   explode et implode

 explode décompose une chaîne suivant un motif de découpe en un

Publicité

tableau de chaînes

 implode réalise l’inverse et construit une chaîne à partir de chaînes

dans un tableau

TBM 2014-15

page 12

Les tableaux associatifs

  Définition

 Le tableau est un mapping qui associe une clé et une valeur.

 Par défaut la clé est une valeur entière qui correspond à l’indice dans le

tableau

 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.

  Exemple

 Déclaration d’un 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

  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

Utilisation des expressions régulières

  Définition (Expression régulière)

 modèle permettant de décrire un ensemble de chaînes de caractères.

  Exemple

 [a − z]+ un ensemble de lettres  [a − z]n,m au moins n et au plus m lettres  [0 − 9]+ un ensemble de chiffres

  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

  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

  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

  On reprend les mêmes principes que ceux utilisés en

Java

  Technologies

 la class permet d’encapsuler les données et méthodes  on définit l’accès grâce aux mots clés : public, protected et private  on peut définir des données static  pas d’hé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

  Différences entre classe abstraite et interface :

 une classe abstraite permet de définir

 des attributs  des méthodes (prototype + corps)  elle n’est pas instanciable

 une interface ne définit que des méthodes (prototype)

TBM 2014-15

page 26

Héritage

  Tout comme en Java :

  En PHP Objet, on ne peut pas écrire :

 class C extends A,B

  car extends n’accepte qu’une seule classe héritée

TBM 2014-15

page 27

Héritage

  Solution

  class A extends O !

!

Publicité

!implements iA!

  class B extends O!

!

!implements iBclass !

  class C extends O !

!

!implements iA, iB!

TBM 2014-15

page 28

Attributs

  Les données membres sont référencées par le mot-clé

$this-> à l’intérieur de la classe.

TBM 2014-15

page 29

Attributs statiques

  Les données statiques sont référencées par le mot-clé

self::

TBM 2014-15

page 30

Méthodes

  les méthodes sont introduites par le mot clé function elles peuvent être précédées d’un des qualificatifs de portée : public (par défaut), protected ou private.

TBM 2014-15

page 31

Méthode magique

  Il s’agit 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 l’objet

TBM 2014-15

page 32

Exemple

TBM 2014-15

page 33

Constructeur et destructeur

  Constructeur et destructeur sont introduits par des

méthodes spécifiques :

  Attention :

 Dans les versions antérieures de PHP, le constructeur portait le nom de

la classe et il n’y avait pas de destructeur.

  Construire une instance avec new

TBM 2014-15

page 34

Héritage

  On utilise le mot clé extends pour déclarer l’héritage et

parent:: pour faire référence à la classe mère :

TBM 2014-15

page 35

Instanceof et is_subclass_of

  On utilise le mot clé instanceof afin de vérifier si une variable est une instance de la classe spécifiée :

  On utilise le mot clé is_subclass_of afin de vérifier si une

variable est une instance d’une sous-classe :

TBM 2014-15

page 36

Réflexion (Reflection)

  Définition (Réflexion)

 Capacité de pouvoir connaître ou examiner le contenu d’un objet :

 Données membres (attributs)  Méthodes

 Depuis PHP 5, on dispose de classes et interfaces dédiées à la réflexion.

  Réflexion simplifiée

 string get_class(object) permet d’obtenir la classe d’un objet  string get_parent_class(object) retourne le nom de classe

parent de l’objet

 array get_class_vars(object) retourne les valeurs des attributs

d’une classe

 array get_object_vars(object) récupère les attributs non

statiques accessibles de l’objet

 array get_class methods(object) retourne les noms des

méthodes d’une classe

TBM 2014-15

page 37

Exemple get_object_vars

On note que l’utilisation de get_object_vars en dehors de la classe ne permet pas d’avoir 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 d’un Formulaire

TBM 2014-15

page 40

Méthode POST et GET

  On récupère les données du formulaire par  $_POST s’il s’agit d’un passage au format POST  $_GET s’il s’agit d’un 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

  On commence par établir la connexion avec le serveur

MySQL :   En php 4

  La variable link contient une ressource qui sera utilisée

pour récupérer certaines informations

TBM 2014-15

page 43

Publicité

MySQL

  Création d’une base de données

  Sélection d’un base de données

TBM 2014-15

page 44

MySQL – Insertion / Suppression d’un enregistrement

  On effectue une requête d’insertion et on récupère

l’identifiant du nouvel enregistrement :

  On effectue une requête de suppression grâce à l’identifiant :

TBM 2014-15

page 45

MySQL modifier un enregistrement

  On effectue une requête de modification grâce à

l’identifiant :

TBM 2014-15

page 46

MySQL – sélection des enregistrements

  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

  Définition

 PDO – PHP Data Objects (PHP 5.1)  PDO fournit une interface d’abstraction à l’accè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

  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

  MySQL

  PostgreSQL

  Gestion des erreurs

 On dispose de deux fonctions pour récupérer les informations suite à

une erreur :

 errorCode() retourne un identifiant alphanumérique de cinq caractères

défini dans le standard ANSI SQL

 errorInfo() retourne un tableau contenant des informations sur l’erreur

survenue lors de la dernière opération exécutée

TBM 2014-15

page 50

PDO - Sélection

  +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

  Traitement avec clé numérique

TBM 2014-15

page 51

PDO - Sélection

  Traitement sur champ

  Traitement sur indice et champ

TBM 2014-15

page 52

PDO-Sélection

  Traitement sur objet

TBM 2014-15

page 53

PDO-Sélection

  Traitement sur objet

TBM 2014-15

page 54

PDO-Sélection

  Insertion dans un Objet

TBM 2014-15

page 55

PDO – sélection : fetchAll

  La fonction fetchAll permet de récupérer tous les

enregistrements.

TBM 2014-15

page 56

PDO – Prepared Statement

  offre la possibilité d’insérer des données en cascade.

TBM 2014-15

page 57

Session

TBM 2014-15

page 58

Session

  Définition (Session)

 une session est un espace de stockage permanent pendant la durée

d’une 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