Cours Développement Web PHP Avancé

2008
Objectif
Plan
Plan
1 Frameworks
2 Conventions de codage
3 SPL
4 Gestion des fichiers
Frameworks
PEAR - PHP Extension and Application Repository
Definition (PEAR ) La mission de PEAR est de fournir :
une librairie structuree de code source libre pour les´ utilisateurs de PHP un systeme de distribution du code source et de` maintenance des paquets.
un style de codage pour les programmes ecrit en PHP´ une bibliotheque d’extensions de PHP (PECL - PHP` Extension Code Library), un site Web, des listes de diffusion et des sites mirroirs pour supporter la communaute PHP/PEAR´
PECL - PHP Extension Code Library
Definition (PECL )
PECL est un projet distinct de PEAR pour distribuer les extensions de PHP (code ecrit en C et compil´ e, telle que´ l’extention PDO).
les extensions PECL sont aussi distribuees en paquets et´ peuvent etre installˆ ees avec l’installeur de PEAR.´
Zend Framework
Definition (Zend )
Le framework Zend (ZF) est un framework open source, oriente´ objet de PHP 5 axe sur le d´ eveloppement de sites web. Il´ repose notamment sur une implantation MVC.
Zend Framework
Definition (Zend )
Le framework Zend (ZF) est un framework open source, oriente´ objet de PHP 5 axe sur le d´ eveloppement de sites web. Il´ repose notamment sur une implantation MVC.
Definition (framework) un framework est un espace de travail modulaire : ensemble de bibliotheques, d’outils et de conventions permettant le` developpement d’applications (on traduit par´ cadre d’applications ou cadriciel)
Zend Framework
Pour info (wikipedia)
Les fondateurs de Zend Technologies, Zeev Suraski et Andi Gutmans, ont commence´ a travailler sur PHP en 1997 lorsqu’ils` ont creé une nouvelle impl´ ementation de PHP, bas´ ee sur son´ pred´ ecesseur PHP2/FI, cr´ eé par Rasmus Lerdorf. Cette´ implementation a donn´ e naissance´ a PHP3, qui a r` evolutionn´ e´ le monde PHP et jete les bases de ce qu’allait devenir le´ langage tel qu’il est connu en 2008. En 1999, ils ont grandement amelior´ e le moteur de script de PHP4 nomm´ e´ Zend Engine.
Note : Zend Studio
Autres Frameworks
Conventions de codage
Conventions de codage
Definition (Conventions de codage)
Elles servent a mettre en place des normes de mani` ere` a ce` qu’un programmeur puisse relire et comprendre facilement le code produit par d’autres programmeurs.
certaines conventions sont dictees par le langage´ d’autres sont etablies par les programmeurs et´ concernent :
le nommage des variables et fonctions la dispositions des blocs (if-then-else, while, ...) le nommage des parametres, ...`
nommage des variables et fonctions
Conventions a appliquer` les noms doivent etre courts et explicitesˆ les noms de variables et fonctions ne contiennent que des lettres minuscules et le symbole souligne´ ’’ un nom de variable est mis au pluriel s’il contient plusieurs el´ ements´ une methode qui retourne un attribut d’une classe doit´ commencer par get une methode qui fixe un attribut d’une classe doit´ commencer par set
Disposition des blocs
On utilisera pref´ erentiellement la syntaxe :´
Autres conventions
on supprime le plus possible les espaces inutiles on declare les variables au moment ou` on les utilise´ on sort des boucles les calculs inutiles ou redondants
(refactoring) on documente les fonctions, methodes et variables /´ attributs
Exemple
Documentation
A quoi sert la documentation du code ?
Elle a pour but d’expliquer au programmeur qui ne connait pas le code :
ce que contiennent les variables ce que font les fonctions (role, comportement, paramˆ etres` en entree / sortie, valeur de retour)´
Documentation
A quoi sert la documentation du code ?
Elle a pour but d’expliquer au programmeur qui ne connait pas le code :
ce que contiennent les variables ce que font les fonctions (role, comportement, paramˆ etres` en entree / sortie, valeur de retour)´
PHP + Doc
C’est d’autant plus important en PHP etant donn´ e l’absence de´ typage et la non distinction entre procedure et fonction.´
Documentation et commentaires
Documentation et commentaires
Format des commentaires (1/2)
tags gen´ eralistes´
On peut introduire des tag (mots-cles) au sein des´ commentaires pour la documentation qui seront ensuite utilises´ pour gen´ erer la documentation au format´ html :
@author Author Name nom de l’auteur
@copyright Copyright Information
@deprecated [version|information]
@license url [license]
@link url [description]
@version description
Format des commentaires (2/2)
Commentaire des classes
Commentaire des fonctions
Gen´ erer la documentation´
PHPDoc
phpdoc permet de gen´ erer de la documentation´ a partir de` fichiers sources PHP (comme on le ferait avec doxygen).
Gen´ erer la documentation´
Gen´ erer la documentation´
PEAR Conventions
PEAR Coding Conventions
Les conventions de codage et commentaires de PEAR sont disponibles a l’adresse suivante :`
SPL
Introduction a la SPL`
Definition (Standard PHP Library)
Il s’agit d’un ensemble de classes et d’interfaces sensees´ apporter a PHP un comportement Orient` e Objet dans le cadre´ de la programmation. Elle repose sur
des iterateurs´ gestion des repertoires et fichiers´ support XML gestion des tableaux sous forme de classe
definition d’exceptions´
SPL Classe et Interfaces
Definition d’un it´ erateur´
Definition (Iterateur)´
Un iterateur est g´ en´ eralement une classe dont la fonction est´
de parcourir une autre classe stockant des objets (ex : tableau, liste, pile, file, dictionnaire, ...)
A noter
Tous les iterateurs h´ eritent de l’interface abstraite´ Traversable
L’interface iterator (1/2)
L’interface iterator (2/2)
Fonctions agissant sur les iterateurs´
Exemple
Exemple et resultat´
Comportement d’un tableau
Interface ArrayAccess
Elle permet de manipuler un objet sous forme de tableau
Interface Countable
Elle permet de connaˆ?tre le nombre d’el´ ements d’une classe´
Interface ArrayAccess (1/2)
L’interface ArrayAccess (2/2)
Description des methodes´ offsetExists determine si l’indice existe´
offsetSet attribue une valeur a l’indice donn` e´
offsetGet retourne la valeur a l’indice donn` e´ offsetUnset supprime la donnee´ a l’indice donn` e´
Interface Countable
Interface IteratorAggregate
Exemple d’utilisation d’IteratorAggregate
La classe ArrayIterator
La classe LimitIterator
La classe AppendIterator
La classe FilterIterator
La classe RegexIterator
La classe IteratorIterator
Autres iterateurs´
Implantation directe : SimpleXMLIterator (1/3)
On dispose de la classe SimpleXMLIterator pour parcourir les fichiers XML.
<bibliotheque> <livre>
<titre>PHP pour les mules</titre>
<auteur>Guy Bouricot</auteur>
</livre> <livre>
<titre>Le grand livre d’HTML</titre>
<auteur>Jean Sans Peur</auteur>
</livre>
</bibliotheque>
Implantation directe : SimpleXMLIterator (2/3)
Implantation directe : SimpleXMLIterator (2/3)
La classe ArrayObject (1/2)
La classe ArrayObject (2/2)
Serialisation
Exemple Serialisation (1/2)
Exemple Serialisation (2/2)
Exceptions SPL (1/2)
Exceptions SPL
La SPL definit plusieurs exceptions d’un point de vue´ semantique :´
LogicException emise si une expression logique est´ invalide
LengthException emise si une taille est invalide´
DomainException emise si une valeurs n’est pas du´ domaine
OutOfBoundsException emise si une valeurs est invalide´
Exceptions SPL (2/2)
Exceptions SPL (suite)
La SPL definit plusieurs exceptions d’un point de vue´ semantique :´
OutofRangeException emise si une valeur est en dehors´ de l’intervalle
OverflowException emise si une valeur est trop grande´
UnderflowException emise si une valeurs est trop petite´
InvalidArgumentException emise si un argument est´ invalide
Gestion des fichiers
Gestion des fichiers
Lecture du contenu filegetcontents(filename, [flags, ...])
Lit le contenu d’un fichier en totalite et le retourne dans une´ chaˆ?ne. Les parametres de la fonction sont les suivants :` filename nom du fichier flags : FILE USE INCLUDE PATH, FILE TEXT context a NULL pour les fichiers` offset position de debut de lecture´ maxlen nombre d’octets a lire, si non sp` ecifi´ e lecture en´ totalite´
On retourne FALSE en cas d’erreur
Exemple Lecture 1
Exemple Lecture 2
Ecriture du contenu fileputcontents(filename, data [,flags, ...])
Ecrit dans un fichier la donnee´ data. Les parametres de la` fonction sont les suivants :
filename nom du fichier data chaine, tableau ou ressource de flux flags : FILE USE INCLUDE PATH, FILE TEXT, FILE APPEND, FILE BINARY context a NULL pour les fichiers`
On retourne FALSE en cas d’erreur
Exemple Ecriture 1
Exemple Ecriture 2
Remplace les balises <livre> ... </livre> par <book> ... </book>
Exemple Ecriture 1
Remplace les balises <livre> ... </livre> par <book> ... </book>
Parcours des repertoires´
a la mani` ere de PHP` on utilise la fonction opendir pour ouvrir un repertoire´ puis readdir pour iterer sur les fichiers´
Parcours des repertoires´
Parcours des repertoires´
Fin