Home
Best practices PHP 5
Contents
1. 144 Utilisation d outils existants pour le d bogage d applications PHP 144 Quelques configurations utiles pour le d bogage 146 Monitoring du d veloppement 146 Ee rapport d quAlit s post teen its ha en E ME dns 146 Le rapport de performances de nn de NL en tqs een 147 Les r s lt ts des teste y crierai s tre fn 147 CHAPITRE 7 Choisir les ressources et les supports de donn es 149 Les extensions C pour PHP as ren Et At na te 150 Ouest quwune extension Lafa 10 rase Pa URI erer 150 Quand et pourquoi d velopper une extension en langage C 151 Choix d un framework de d veloppement 151 Utilit dun framework 5 428 ii aus late a M es 152 Choix un framework existant ns nada aan Ant ee au 153 Construire son propre framework sis iinendes via disusegh ions 157 Utilisation de PEAR ses nets de un eee hii prende unes 158 Autres ressources scripts et applications 160 Comment choisir des ressources fiables 160 Note concernant les licences vise es misent 161 Choix du SGBD raran i a E E Ne Nes 161 Qu st cegar SGBD rss einen EE T i eE EEA 161 MySQL oiei p er tt EE E E E E et ee 162 Caract ristiques de MySQL es IS SES PR AR ER RES 162 Pourquoi choisir MySQL ENCRES SSSR 163 Postere SOE tie a eie e a a e es e a De iate
2. ConfigFile Q Administrator filename _ firstname 1 launch 1 name syntax lastname est lanc par implementation role privileges mail E description g re manage MonitorAgent Q _ name ConfigKeywords Q type key implementation description description description gravity validationPattern frequency an Incident QO 1 Informof 1 informe de line Figure 8 12 Un diagramme de classes pour UNANYM Le diagramme de classes de conception Notre diagramme de classes pr c dent nous permet de distinguer les entit s m tier et leurs relations Nous allons maintenant nous int resser aux l ments de contr le et de dialogue C est partir de ce diagramme qu il sera possible par la suite de cons truire ou g n rer le squelette d une application PHP Pour ce diagramme nous utiliserons les trois types de classes vus pr c demment Il est possible de passer par un diagramme interm diaire le diagramme de classes par ticipantes illustr sur la figure 8 13 Il permet partir de la mani re dont vous voyez votre interface de d duire les classes dialogue et contr le l ments de mod lisation utiles PHP 193 CHAPITRE 8 Dialogue O champ1 champ2 operation1 operation2 Figure 8 13 Un diagramme de classes participantes donnee donnee2 Acteur action1 action2
3. amp instance Singleton __construct getinstance entr e Sinstance_id SingletonA SingletonB Fsetnstancen Figure 10 7 Centraliser la gestion du motif de plusieurs singletons Il vous suffira alors d tendre votre classe avec la classe Singleton et de faire appel la m thode parente getInstance comme le montre l exemple suivant Extrait du fichier Singleton php abstract class Singleton private static _instances Array protected function __construct protected static function getInstance instance_id null if lisset self _instances instance_id if lclass_exists instance_id return false self _instances instance_id new instance_id return self _instances instance_id Les motifs de conception Design Patterns CHAPITRE 10 Extrait du fichier SingletonA php class SingletonA extends Singleton public static final function getInstance return parent getInstance __CLASS__ CES Vous pouvez galement jouer avec cette classe pour mettre en place des variantes de singleton par exemple cr er un multi singleton qui prend en param tre un iden tifiant th me ou type sur lequel il se base pour g n rer des objets uniques Mise en pratique Pour cr er un singleton trois l ments suffisent une variable priv e instance le constructeur et une m thode publique getInstance
4. 359 G n ration de code 360 quoi sert la g n ration de code 360 Que peut faire la g n ration de code Re RON Ed RE M ER 360 Acc l rer et optimiser des d veloppements 361 Table des mati res ET Un g n rateur d application ne NAN OS RUE 361 La r g n ration automatique partielle 363 Tabledetraduction SERRE Ana en das dan Ve Ne NE en 363 Interagir avec d autres plates formes 366 Exemples et id es de g n rateurs PHP een a den anen an 366 G n rer des tests unitaires 366 G n ration de couches d acc s la base de donn es 367 G n ration d interfaces utilisateur UNIS ESS Re ne se 367 Couches de services web 368 G n rer la logique m tier Le entend ve one 368 Limites et dangers de la g n ration de code 368 Miseen ache 222208 ee en PE RAM ER ent Lee 369 Mise en cache sur mesure 369 Utilisation d un outil existant 372 Mise en cache haut niveau via serveur proxy 373 Mise en cache plusieurs niveaux nn an en ee rues 373 Mise en cache bas niveau du code compil 37
5. 302 Outils de d bogage pour PHP 5 282 nine ar td rare 308 D D al D AR E EEE E E E E E ES EEE EA EAEE 308 D LT Dan aE LE ETE e ENE AE EENE E 311 KCacheGrind WinCacheGrind 312 laborer des tests unitaires 314 Installation de lespace de travail rss Rest 314 Commen ons par prendre de bonnes habitudes 314 CHAPITRE 13 Simplifier et p renniser un d veloppement PHP 321 Commenter documenter 322 Les secrets du bon commentaire 322 10 astuces pour b cler vos commentaires coup s r 322 10 astuces pour am liorer vos commentaires 324 ET Best Practices PHP Utilisation d un g n rateur de documentation 326 Utilisation de PHPDocumentor 2 124 2 uns eine ann 327 Pratiquer le remaniement refactoring 328 Qu est ce que le remaniement 2 44 eee samir it Met r erane 328 Planifier le remaniement fosse des dar set fente tan 329 Leremaniementenacti n 2 4 ss dia rreran reren 330 Exemples pree a ra Teon REEE EAEE E EAEE E OE AREER 331 Extraction dune condition 331 Optimisation des performances are Rene nent ne tnt 332 L uhseedes templates ele EE A ee ne marre etat 332 Otrest ce quun moteur de tem
6. Figure 4 13 RER E 7 m m Dossier de configuration Les r pertoires concern s par etc Pr D L 7 du syst me les op rations de sauvegarde web cappiit gt 3 Chemin vers les applications PHP lt appli2 gt usr local svn Racine du d pot de donn es Dossier de configuration des d mons Contenu du fichier etc 1ocal etc rsyncd conf sur notre serveur de d veloppement uid www gid wheel use chroot no max connections 4 syslog facility locals pid file var run rsyncd pid log file var log rsyncd log sysconf path etc comment Configuration du syst me read only true exclude bak EE Organisation du projet conventions et outils PREMI RE PARTIE conf path usr local etc comment Configuration des programmes d mons utilisateur read only true en exclude bak repository path usr local svn comment Sources du d p t de donn es read only true exclude web path web comment Applications PHP read only true exclude bak log ses en tgz tar gz my_ tmp psd Contenu du fichier etc 1ocal etc rsyncd conf sur notre serveur de d veloppement uid www gid wheel use chroot no max connections 4 syslog facility locals pid file var run rsyncd pid log file var log rsyncd log sysconf path etc comment Configuration du syst m
7. SOAP un standard polyvalent Introduit sous l influence de XML RPC et la popularit grandissante de XML SOAP est aujourd hui un standard Il est d fini par le consortium W3C l adresse suivante gt http www w3 org TR soap Mettre en place un service web avec SOAP peut faire intervenir deux autres protocoles e WSDL Web Service Description Language un fichier XML contenant le manuel d utilisation du service web param tres m thodes appeler et for mats des donn es Ce langage de description est d crit l adresse suivante gt http www w3 org 2002 ws desc e UDDI Universal Description Discovery amp Integration un annuaire universel de recherche de services web Figure 14 9 Recherche description et utilisation d un service web avec UDDI WSDL et SOAP Comment fonctionne ce service Je veux un service m t o Quel temps fait il Paris y Aj UDDI WSDL SOAP Recherche Description R ponse il d un service du service fait nuageux m t o m t o 18 C PHP propose plusieurs applications SOAP dont une extension native mettant en uvre des serveurs et des clients Le document WSDL doit actuellement tre d fini la main mais il existe pour cela des outils que nous aborderons plus loin Le client SOAP sait lire la description WSDL et utiliser SOAP pour interagir avec le serveur Nous allons nous int resser plus pr cis m
8. Alternative 2 array Guillaume array Pon on Alternative 3 array explode Guillaume Pon on D boguer les donn es contenues dans un tableau est galement tr s facile gr ce aux fonctions print_r et var_dump qui permettent un affichage intuitif du contenu d un tableau Op rations utiles pour manipuler des tableaux La figure 11 2 donne un aper u de la liste des fonctions utiles pour manipuler des tableaux en PHP Pour en savoir plus sur l utilit de ces fonctions PHP a l avantage tre accompagn d une documentation en ligne tr s compl te en plusieurs langues dont le fran ais et accompagn e de nombreux exemples Les documents XML Quand et comment utiliser des documents XML XML est un format permettant de repr senter des donn es sous forme hi rarchique arbre Il existe depuis longtemps et il est aujourd hui largement utilis e Les formats de stockage convergent pour la plupart vers XML PDF documents bureautiques XHTML etc e De plus en plus d applications stockent leurs donn es et leur configuration en XML e De nombreux protocoles d change et de manipulation de donn es se basent ga lement sur XML SOAP WDDX XMI etc Un document XML simple est repr sent sur la figure 11 3 Il se compose de balises ou tags book intro chapter accompagn es ou non d attributs title author id Bonnes pratiques de d veloppement en PHP Figure 1
9. 116 Quelques t ches automatis es rar Senna mere V ras escale 116 Quelques t ches semi automatis es San ES matins 117 Un environnement cl en main la Zend Platform 117 CHAPITRE 5 Cho sirun dit ur sssssss sn din een eus 119 Comment choisir un diteur adapt ses besoins 120 L diteur que Pon maltris scsi neue td benne 120 Un diter complet iis ss de das ee ie oise de date nt Ne dat 121 Un diteur adapt la taille et la nature des d veloppements 123 Faut il homog n iser les outils d dition 123 diteurs pour applications lourdes 124 OT ER PE CR EE a E a 124 PE Eea i EATE EE E ee SR a SE E EE ne sue 124 ET Best Practices PHP Maguma Open Studio Maguma Studio 125 diteurs polyvalents 125 Komodo Professional coio iiie dea d EE MP ae Re a 125 D UE a a aa e E a E a a a ATRE 125 PHP D signert mieheen a a sean dar E RE E E ee 126 Ione SR E E E E E EE TE 126 Dreamweaver eroien do rade E EEE EE E T ERE ES 126 AM D E Rs Re A Rae en E EESE 127 LAS D GE RP E R EEE E e 127 PHPEJ o RS AEA AA E A A A A A 127 UltraEdit Seeme Sa ai E A E a i E aS AA Etes DU 128 Crimson Editor syr es rerama i me a a A da nt SS 128 Quanta Plus 248 ras e ne e e T o a ea O een 128 diteurs pour petites applications
10. n lunnan 238 Table des mati res ETE Miseen D ET RSR TERRE SET EE ES MERS TUE 238 La commande Command 239 Principe de la commande ENS e fan te ee Rate 239 Mieen pratique ss NS Re nt Les SC ae ne se 239 Usa One ta a ae ere Ne RARE Ne ans ares RAR AUS ES 239 L it rateur Iterator 4 4 22 240 Prinapedetliterateur srn i orare pa ee CPS EIE ee de dan Us 240 Utilisation avec PHP 240 Le m diateur Mediator 242 RAD du m diateur sseni mn eee ep Re dt Mere 242 MISE CR DRASS eese eei ER Se RUE RE aog eE aiik 242 L m mento rss Lee ee son due Una dr srl 242 Prineipe du memento ss Tuia eaa i e ES IN RL 242 Miseen pratiques ie Re E E ee A A r E etes 243 L observateur Observer 243 Principe de observateur sara rasta nananana 243 Mie enpratiguesiz mirat E par e aa A E E E RY 243 E etA State re haa n a n a a A a a ae E se de es os 244 DR D LL RTS DR TA E E A E 244 Miec pratigue yr ae na rt Re EOE GR EU TU E EAT 244 Lastrat gie Strategy olies manri rea iE AE E aE ES nn 245 Le patron de m thode Template of Method 245 Principe du patron de m thode sn ere entra eh anse 245 Mien pratigue Are nent nimi Pr BTE da aeia one Sas 246 TROISI ME PARTIE Bonnes pratiques de d veloppement en PHP 249 CHAPIT
11. Avez vous adopt une m thode de gestion de projet Ce projet a t enti rement d velopp avec des algorithmes proc duraux Un cer tain nombre de normes syntaxe de codage mise en forme structures etc ont t d finies pour travailler en quipe sur les d veloppements Le projet a t d coup en modules et la r partition des t ches s est op r e sur ces modules Cela a t possible gr ce une pr paration importante du projet en amont De nombreux changes avec le client qui s est fortement impliqu ont permis au bout de plusieurs ver sions d aboutir un cahier des charges tr s complet laissant peu de marge d erreur Quels outils avez vous utilis pour ce projet Nous avons principalement utilis les diteurs Scite Scintilla et Eclipse pour ses fonctionnalit s CVS L environnement de production est compos du syst me d exploitation Mandrake Linux de PHP 4 Apache 1 3 x et MySQL 4x Les ex cutables pstotext et catdoc sont utilis s pour le moteur de recherche sur les documents Un serveur SPARE est galement install Une r plication est effectu e une fois par jour du serveur de production vers ce serveur qui est utilis pour l valuation des modifications avant mise en production Il peut aussi servir de serveur de secours au cas ou le serveur de production serait inop rant Que retenez vous de cette exp rience Dans un premier temps ce projet nous a permis
12. joo d Commen ons par prendre de bonnes habitudes Nous allons maintenant cr er notre premier jeu de tests sur une classe que nous appellerons ConfigManager Au lieu de commencer par impl menter ConfigManager nous allons remplir notre fichier de tests et effectuer des op rations avec ConfigManager comme si la classe existait EJ Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Fichier tests ConfigManager test php lt php Inclusion des ressources dont nous aurons besoin pour notre test if defined SIMPLE_TEST define SIMPLE_TEST simpletest require_once SIMPLE_TEST unit_tester php require_once SIMPLE_TEST reporter php Inclusion de la classe tester require_once src ConfigManager php Classe de test sp cifique ConfigManager class TestOfConfigManager extends UnitTestCase Un fichier de configuration temporaire qui Va nous servir pour nos tests private tempConfigFile tmp configTest ini Ce constructeur appelle le constructeur de la classe UnitTestCase que la classe courante tend function TestOfConfigManager this gt UnitTestCase Assurer la qualit d un d veloppement PHP CHAPITRE 12 Cette fonction est appel e automatiquement avant les tests par le gestionnaire de tests Nous y cr ons un fichier de configuration temporaire function setUp my_config key value nkey2 3 file_pu
13. Cha ne gt tableau tab explode n chaine XML gt tableaux xml_parse_into_struct parser xml vals index Fichier gt tableau tab file fichier txt Requ te SQL gt tableau row_tab result gt fetch_array MYSQLI_ASSOC Fichier de configuration gt tableau config_tab parse_ini_file php ini true Exploiter la souplesse des tableaux Les valeurs d un tableau PHP peuvent tre de n importe quel type Les cl s en revanche ne peuvent tre que des cha nes de caract res des caract res ou des nom bres entiers sign s Un tableau peut tre multi dimensionnel Il ny a pas de restriction sur le nombre de dimensions De m me il ny a pas de restriction d h t rog n it sur les types de cl s et de valeurs d un m me tableau Figure 11 1 Les valeurs d un tableau en PHP supportent tout type de donn es cl nombre Q valeur cha ne cl caract re 8 valeur nombre cl cha ne 8 z O cl caract re 8 valeur cha ne cl nombre Q valeur tableau cl cha ne 9 valeur objet D clarer un tableau peut se faire de plusieurs mani res L exemple suivant montre trois d clarations qui cr ent des tableaux identiques Exploiter les points forts de PHP les m ta structures ET CHAPITRE 11 Plusieurs solutions pour d clarer un tableau Alternative 1 array array 0 gt Guillaume 1 gt Pon on
14. Mod lisation en UML pour PHP DEUXI ME PARTIE Pour aller plus loin vous pouvez galement vous procurer une documentation crite compl te Son prix est tr s abordable pour les particuliers et d risoire pour les entre prises RETENIR volutions futures d UML2PHP5 Faisant suite la possibilit de g n rer des services web la prochaine volution annonc e par le d ve loppeur du plug in est la capacit effectuer un reverse engineering sur du code existant c est dire de recr er automatiquement le diagramme UML partir du code PHP MDA la voie du futur MDA Model Driven Architecture est un projet de POMG Object Management Group qui r unit de nombreux acteurs strat giques sur le march du d veloppement informatique En r sum ce projet vise mettre en place une couche d abstraction compl te par dessus le code et ses volutions bas sur le mod le Gr ce ce principe il sera pos sible de penser enti rement une application travers son mod le et de g n rer son code source complet en PHP en NET ou en J2EE sans qu aucune retouche de code ne soit n cessaire l heure actuelle nous n en sommes pas encore l En revanche les volutions d UML2PHPS et de grands diteurs tels que IBM Rational Rose qui proposent de plus en plus la gestion de PHP promettent un avenir int ressant entre PHP et la mod lisation Parmi les outils propos s par MDA XMI est un protocol
15. donn es Serveur de production Image de l application PHP hp FRS Tai en ligne et ses donn es 7 Applications PHP en ligne et ses donn es Version N archiv e Version N 1 archiv e y Version N 2 archiv e s Sur l exemple de la figure 16 4 la politique de sauvegarde adopt e cr e des archives r guli res d une ou plusieurs application s qu il est possible de restaurer sur le ser veur de sauvegarde ou le serveur de production La mise en place d un syst me de packaging d applications avec des outils tout faits de packaging et depackaging facilite grandement la mise en place de ces applications Quelques outils utiles Mis part votre outil de packaging les principaux outils d une routine de sauvegarde sont des programmes de synchronisation et d archivage Dans un environnement Unix l outil de synchronisation rsync est un bon choix Vous avez un exemple de mise en place d une synchronisation avec rsync au chapitre 2 dans la section Op rations de sauvegarde Les outils d archivage sont nombreux Un des plus populaires sous Unix s appelle tar Il permet d archiver compresser d compresser et d sarchiver vos applications comme vous le souhaitez G n rer des rapports d incidents Si vous avez le temps et les moyens de mettre en place un syst me centralis de ges tion d incidents cela sera tr s int ressant pour faci
16. CULTURE En savoir plus sur les fondateurs de PHP Au chapitre 18 de cet ouvrage vous trouverez des t moignages d utilisateurs de PHP avec en exclusivit celui de Zeev Suraski partir de ce moment PHP change de nom Il devient PHP Hypertext Prepro cessor acronyme r cursif Ce fut le signal de la publication d une nouvelle plate forme qui n est plus le projet d un seul homme mais d une communaut En 1998 plusieurs dizaines de milliers d utilisateurs et plusieurs centaines de milliers de sites font d j confiance PHP PHP 3 a couvert environ 10 du parc mondial de serveurs web PHP 4 PHP 4 a t initi durant l hiver 1998 Andi Gutmans et Zeev Suraski d cid rent de r crire le moteur interne de PHP afin d am liorer les performances et la modularit du code Le nouveau moteur baptis Zend Engine Zend est une combinaison de Zeev et Andi a atteint haut la main son objectif La premi re version de PHP 4 a t publi e officiellement en mai 2000 Des performances plus lev es une compatibilit avec de nombreux serveurs et plusieurs nouvelles fonctionnalit s utiles ont contribu au succ s de cette version PHP 4 a battu des records de popularit Plusieurs millions de sites web indiquent qu ils sont install s avec PHP et des centaines de milliers d utilisateurs travers le monde lui font confiance L quipe s est galement consid rablement agrandie avec de nombreux contribut
17. Impl mentations possibles Via les moteurs de templates Utilit de la transformation Ici la s rialisation d un objet en document XML permet le transfert et le stockage de ses structures ce qui ne serait pas possible en l tat Les donn es chang es entre deux entit s d un service web sont souvent des objets repr sentant des requ tes labor es et des donn es m tier Ces objets doivent tre traduits au format SOAP ou XML RPC pour tre transmis La construction de documents XML partir d un ou plusieurs objets via les templates offre norm ment de possibilit s et reste tr s abordable en terme de simplicit de mise en uvre Comme nous l avons vu au travers de la liste des outils existants les moteurs de tem plates construisent toutes sortes de documents textes partir de variables PHP Cette Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE solution souple et facile mettre en uvre est adapt e des applications bas es sur des formats XML DTD propri taires En revanche la transformation effectu e avec ce proc d ne peut exploiter que les donn es accessibles d un objet Les valeurs d attributs priv s ne peuvent tre r cup r es si l objet ne poss de pas un m canisme pour cela La structure de la classe dont est issu l objet ne peut tre obtenue que par l API de r flexion Via introspection par l API de R flexion Cette extension un peu particuli r
18. RETENIR Utilit d un jeu de moniteurs au red marrage Lorsqu on red marre un serveur qui poss de beaucoup de d mons et d utilitaires il est parfois difficile de se rappeler tout ce qui doit tre fait En mettant en place un monitoring efficace vous vous rendez compte tout de suite de ce qui ne va pas Ainsi vous serez en mesure de r agir jusqu ce que le monito ring indique que tout est op rationnel D finition des exigences pour l exploitation QUATRI ME PARTIE Cr er soi m me un r seau de tests pour le monitoring Nous avons vu dans une remarque pr c dente Utiliser un gestionnaire de tests pour monitorer les incidents comment d velopper un petit jeu de tests pour suivre l tat d une ressource Nous pouvons tendre ce principe de nombreux tests Pour cela il vous suffit d utiliser les options de regroupement de votre gestionnaire de tests favori et de vous baser sur un seul contr leur pour activer l ensemble de ces v rifications 2 Crontab ou 7 Figure 16 9 K s I Contr leur D clencheur Contr le centralis du action manuelle d clenchement des tests en A ___ Testn one ni Vue Analyse du r sultat cran de contr le Surveillance applicative La surveillance applicative peut tre li e notre gestionnaire d incidents de la section pr c dente Centraliser et g rer les incidents Rappelons nous qu il existe deux types de tests exploitables
19. Statique Dynamique l ments de mod lisation utiles PHP 18 CHAPITRE 8 Le sujet de nos exemples Nous allons prendre comme sujet le d veloppement d un outil de gestion pour un environnement d exploitation h bergeant des applications PHP Cet outil devra faci liter la mise en place e d outils en ligne de commande e d agents de monitoring e de fonctions utiles pour la gestion des applications et de leur processus de d ve loppement Elle devra notamment permettre des manipulations en ligne de commande et via une interface web comme toute application web dynamique qui se respecte L analyse fonctionnelle Expression des besoins exigences et contraintes Pour commencer nous allons d abord nous poser quelques questions essentielles en faisant abstraction des d tails Quelques questions se poser Cette premi re tape tablira la liste des besoins des exigences et des contraintes utiles aux analyses fonctionnelles pouss es qui vont suivre Pour cela nous r pon drons aux questions suivantes 1 quoi va servir l application 2 qui rendra t elle service 3 quels besoins r pondra t elle 4 Qui sont les acteurs et que font ils 5 Quelles sont les exigences de qualit de performance et d interop rabilit 6 Quelles contraintes et difficult s sont pr voir R daction de l expression des besoins Commen ons tablir une liste dexpression des besoins r
20. Troisi me tape volution et adaptation Un nouveau type de produits voit le jour les hydratants Ces derniers n ont aucun rapport avec le voyage nous allons donc les lier la classe la plus g n rique produit par l interm diaire d une entit produits cosm tiques Suite cela une nouvelle fonctionnalit li e aux hydratants est demand e pour notre application n cessitant l acc s aux sp cificit s des produits cosm tiques Un nouvel objet contr le produit cosm tique h ritant de contr le produit sera donc cr Adopter les standards et s adapter l existant S adapter l existant et adopter les standards propos s par les organismes agr s W3C Oasis etc est un gage de p rennit et une porte ouverte l interop rabilit Tout projet qu il soit professionnel ou non doit tre un minimum communicant et volutif pour assurer un succ s long terme et grande chelle La figure 9 5 met en avant un exemple de plate forme pens e dans le sens de l volu tivit Nous pouvons voir qu tous niveaux il est possible d envisager des adaptations Si vous avez besoin de mettre en place un protocole de communication entre deux entit s de d velopper une nouvelle application ou de stocker des donn es il vous sera utile d avoir le r flexe de vous renseigner sur ce qui existe L utilisation d un outil permettant des imports exports travers des formats de don n es normalis
21. Une classe singleton lt php Notre classe Singleton class Singleton Cette variable contient l instance de notre classe private static _instance 11 private variable Ce constructeur n est appel qu une seule fois Il est priv donc ne peut pas tre appel de l ext rieur private function __construct echo Appel du constructeur n Cette m thode renvoie l instance du singleton Si cette instance n existe pas elle est cr e public static function getInstance if lisset self _instance self _instance new Singleton return self _instance EJ Mod lisation en UML pour PHP DEUXI ME PARTIE Accesseurs de la variable variable public function setVariable variable this gt variable variable public function getVariable return Variable this gt variable n Test de la classe singleton Cr ation de l instance du singleton instance Singleton getInstance instance gt setVariable 34 Devrait renvoyer new instance instance new_instance Singleton getInstance echo new_instance gt getVariable if new_instance instance echo new_instance instance n Ceci g n re une erreur other_instance new Singleton gt Les motifs de structuration adaptateur Adapter Un objet qui impl mente une interface A doit tre manipul dans un
22. tre simple et fiable surtout s il manipule des donn es sensibles e Se faire oublier c est dire fonctionner sans probl me et sans n cessiter de maintenance de relances r guli res ou de proc dures complexes d utilisation e tre unique dans sa sp cialit car la mise en place de plusieurs outils redondants augmente vos chances d obtenir un syst me instable et difficile maintenir Strat gies d installation Les responsables d exploitation vous le diront les principaux sympt mes des instabi lit s constat es sur un environnement d ex cution sont g n ralement les suivants e Une architecture trop complexe pr sence de nombreux outils et programmes dont la plupart sont inutiles e Des droits d acc s mal configur s acc s publics des ressources critiques acc s trop restreints responsables de pertes de temps ou acc s trop nombreux que les utilisateurs ont du mal retenir e Une mauvaise configuration de l environnement des scripts qui plantent des partitions pleines une mise jour impossible du syst me et tout autre probl me bloquant caus par un manque de pr vision L installation d un environnement d ex cution doit passer par une phase initiale de r flexion pendant laquelle il faudra estimer des solutions techniques en r ponse un besoin qui peut voluer Voici une proposition d ordre du jour que vous pouvez d tailler ou faire voluer 1 Prendre connaissance de la ma
23. uvre Nous rencontrons souvent les termes ma trise d ouvrage et ma trise d uvre que ce soit au sein de projets d entreprises ou d associations Cette diff renciation des mem bres d un projet est peu compatible avec les pratiques des m thodes agiles mais il est int ressant de la conna tre T cp qualit class xxx y A private yyy xxx Protected x gt funtion _constr E s LA AS Sthis gt x co ts d lais D xx bts Ma trise d ouvrage Ma trise d uvre Figure 2 12 Ma trise d ouvrage et ma trise d uvre La ma trise d ouvrage Elle est constitu e d un ensemble de personnes du projet dont la charge est de d finir les besoins et les sp cifications fonctionnelles c est dire tout ce qui est en amont de la technique Elle repr sente les utilisateurs finaux et effectue des estimations de co ts afin d tablir un budget et un planning Elle est ensuite charg e de v rifier que les d veloppements en cours r pondent bien aux sp cifications fonctionnelles mises en place Il peut arriver lorsque les sp cifications fonctionnelles sont r alis es dans la pr cipi tation ou un manque de rigueur que les solutions adopt es par la ma trise d uvre charg e de la r alisation ne conviennent pas S ensuivent alors des rectifications qui font perdre du temps et de l nergie tout le monde Il est important que la ma trise d ouvrage fournisse un travail rigoureux complet
24. D compression de l archive de la nouvelle version Retrait de l archive Copie du fichier my_configure de l ancienne version vers la nouvelle D placement dans le r pertoire racine des sources de la nouvelle version Changement des droits du script my_configure droits d ex cution pour l utilisa teur courant Ex cution de la pr compilation via my_configure Compilation Installation D placement dans le r pertoire parent Retrait des sources de l ancienne version testez tout de m me la nouvelle version avant d effectuer cette op ration par pr caution ou n effectuez pas cette op ra tion par mesure de s curit L environnement d ex cution an CHAPITRE 15 ALLER PLUS LOIN En savoir plus sur la compilation et l installation d Apache Le code source d Apache est fourni avec un fichier INSTALL sa racine qui explique comment effectuer cette installation sur mesure Si vous rencontrez des erreurs avec la proc dure d crite dans cet ouvrage vous pouvez vous r f rer ce fichier pour analyse Il se peut qu avec le temps certains param tres aient volu Compilation de PHP et de ses extensions La compilation de PHP est similaire celle du serveur HTTP Apache Nous nous baserons ici sur une compilation avec Unix Il existe deux types d installation de PHP pour une utilisation en production e L installation en module dynamique le serveur HTTP charge dynamiquement le module PHP
25. ET D finition des exigences pour l exploitation QUATRI ME PARTIE Par exemple si vous pr voyez de mettre en place un service pour un client distant sur le port 85 vous gagnerez du temps pr venir l administrateur qui fera les op rations n cessaires sur le pare feu pour ouvrir ce port Ce n est qu un exemple parmi d autres Installations avec compilation sur mesure Pourquoi compiler sur mesure En environnement de production la compilation sur mesure est recommand e Voici en r sum ce qu elle permet e Une parfaite adaptation l environnement d ex cution existant syst me d exploi tation et ressources pr sentes e Des performances optimales gr ce aux r glages que vous aurez effectu s pour la compilation Vous pouvez notamment donner au compilateur des directives d optimisation du code source g n r e Une configuration optimale de vos ex cutables Par d faut les binaires pr compi l s paquetages RPM installeurs Windows contiennent un maximum de fonc tionnalit s afin d viter d tre en panne En compilant sur mesure il est possible de r duire notablement la taille de l ex cutable en incluant uniquement les fonc tionnalit s dont vous aurez besoin ce qui contribue la fiabilit et aux perfor mances du programme e Une volutivit r activit sans limite D s que la nouvelle version est disponible avec les corrections de bogues et failles de s curit vous pouvez la mettr
26. EYROLLES architecte Best practices PHP 5 CHEZ LE M ME DITEUR Dans la collection Architecte logiciel X BLANC MDA en action Ing nierie logicielle guid e par les mod les N 11539 2005 294 pages F VALL E UML pour les d cideurs N 11621 2005 300 pages P ROQUES F VALL E UML 2 en action De l analyse des besoins la conceptions J2EE N 11462 3 dition 2004 380 pages posters J L B NARD L BossAviT R M DINA D WILLIAMS Gestion de projet Extreme Programming N 11561 2002 300 pages propos de PHP C PIERRE DE GEYER E DASPET PHP 5 avanc N 11669 2 dition 2005 804 pages P CHAL AT D CHARNAY ET J R ROUET PHP et JavaScript Les Cahiers du programmeur N 11678 2005 224 pages J M DEFRANCE PHP MySQL avec Flash MX 2004 N 11468 2005 710 pages J M DEFRANCE PHP MySQL avec Dreamweaver MX 2004 N 11414 2004 550 pages J ENGELS PHP 5 Cours et exercices N 11407 2005 518 pages S MARIEL PHP 5 Les Cahiers du programmeur PAP et XML N 11234 2004 288 pages J P LEBOEUF PHP 5 et MySQL Les Cahiers du programmeur Premi re application avec PHP 5 et MySQL N 11496 2004 240 pages S MARIEL PostgreSQL Les Cahiers du programmeur Services Web avec PostgreSQL et PHP XML N 11166 2003 150 pages Programmation objet et mod lisation UML H BERSINI I WELL
27. Zend Engine Ce sont ces tableaux d op rations l mentaires que nous appelons tableaux d opcodes Les premiers objectifs des Zend Engine furent d assurer des performances optimales La version 4 de PHP en particulier a b n fici de ces am liorations Zend Engine II qui appara t dans PHP 5 est une refonte de la premi re version Tout en maintenant des performances optimales son objectif est de g rer les m ca nismes de programmation orient e objet parmi de nombreuses autres am liorations http www zend com php5 zend engine2 php Limite des performances PHP n est pas aussi rapide qu un langage compil la main en instructions machines natives accompagn d un typage fort et d une structure rigide comme le sont les langages C et C Si votre application doit g rer des traitements lourds n cessitant un tr s grand nombre de calculs vous avez la possibilit de cr er facilement une extension en langage C que vous pouvez compiler avec PHP ou en tant que module dynamique En revanche pour un langage interpr t les performances de PHP sont tr s bonnes La grande majorit des traitements peuvent tre confi s PHP m me forte charge Peut on optimiser les performances de PHP La seule chose que PHP ne g re pas par lui m me pour l instant est la mise en cache du code compil la vol e opcodes qui vite une r interpr tation du code PHP chaque requ te envoy e par le client Pou
28. contr les d int grit Mise jour du syst me t l chargement et installation des derni res versions des paquetages logiciels mise jour du syst me passage des patchs de s curit Nettoyage des logs mise en place d un rotate logs une rotation des logs qui archive les fichiers lorsqu ils deviennent trop volumineux install par d faut sur la plupart des syst mes Unix et Linux R cup ration de ressources script qui surveille les processus threads connexions r seau ouvertures de sockets etc et qui limine tout ce qui mest plus utilis L laboration de ce script n cessite une bonne connaissance du syst me et des applications mises en place ADMINISTRATION SYST ME Mise jour automatique du syst me exemple avec FreeBSD Comme sur la plupart des syst mes de la famille Unix il est possible sous FreeBSD d automatiser les mises jour du syst me l automatisation compl te de ce proc d n est pas conseill e sur des machines de production mais elle peut tre pratique sur des machines de d veloppement La figure 4 16 illustre les op rations que l on peut effectuer dans le cadre de cette mise jour tous les jours 1 fois par semaine Mise jour des ports de la Mise jour des Mise jour du syst me documentation et des binaires via make buildkernel sources du noyau via cvsup portupgrade make installkernel Figure 4 16 Automatiser la mise jour du syst me FreeBSD L
29. ensemble des erreurs d tecta bles par l analyseur syntaxique de PHP quelles que soient leurs gravit E_STRICT ajoute cela la d tection d erreurs sp cifiques PHP 5 Traduction des param tres GET et POST register_globals Off Pour des raisons de s curit ce param tre va dispara tre dans les prochaines versions de PHP afin d tre mis d office Off Son activation permet la traduction directe des param tres HTTP GET et POST en variables PHP ce qui peut g n rer de graves probl mes de s curit et ouvrir des portes aux attaques par injection de code La configuration du serveur HTTP Les modifications de la configuration du serveur HTTP fichier httpd conf pour Apache peuvent devenir fr quentes notamment lorsqu il supporte un grand nombre Organisation du projet conventions et outils PREMI RE PARTIE d applications PHP mises jour r guli rement Dans ce cas vous pouvez mettre en place une routine telle que d crite sur la figure 4 5 Figure 4 5 Sous gt n rati domaines pertoire de Automate de generation D configuration d Apache de la configuration HTTP Domaines om gt hostphp PA 0 leyrolles com pep PHPE science f PaSa httpd conf web WWW Aep J fig php net talks ks NS 5e vhosts conf Bd g n r pear pour chaque site trouv et je compl te le fichier de Opes oocom j analyse le fichier vhost php configuration
30. et p rennit du mod le Objets m tier G n ricit Les standards et l existant Design patterns Factory Builder Singleton etc Exploiter les points forts de PHP Tableaux documents XML objets SimpleXML SAX DOM XSLT Biblioth que d objets Passer d une structure l autre Assurer la qualit R flexes d optimisation M moire et ressources Exceptions D bogage Tests unitaires Commenter documenter Refactoring Moteurs de templates Assurer la polyvalence Interactions Couplage fort l che Services web SOAP REST etc G n ration de code Mise en cache D finir les exigences pour l exploitation Environnement applicatif Compilation d Apache et PHP S curit et maintenance Routines de sauvegarde Rapports d incidents Surveillance syst me et applicative La Zend platform Installation param trage T moignages Zeev Suraski membre du PHPGroup EYROLLES a Conception Nord Compo
31. if condition instruction Mais il est facile apr s coup de vouloir ajouter une nouvelle instruction dans le bloc et d oublier d ajouter les d limiteurs Prenez donc l habitude de mettre syst matiquement les d limiteurs m me si le corps du bloc ne comprend qu une seule instruction if Scondition instruction R gles de nommage Le nommage des classes des fonctions des variables des constantes et de tout ce quoi vous pouvez donner un nom fait partie de l habillage de votre code La lisibilit de vos programmes d pendra beaucoup de la langue des mots et de la casse majus cules ou minuscules que vous aurez choisi Choisissez une langue Dans un souci d homog n it et de p rennit la langue choisie pour les mots cl s d un code source est l anglais Si vous choisissez d crire en anglais mais que vous tes fran ais vitez de faire des m langes La fonction get_contentO sera plus facile lire que get_donnee ou retourne_content Rien ne vous emp che en revanche de choisir le fran ais pour les commentaires Vous pourrez ainsi obtenir une documentation fran aise de votre code source si vous utilisez un g n rateur comme PHPDocumentor D finir des conventions pour la conception d applications PHP RE CHAPITRE 2 Choix des mots Les mots que vous utilisez pour vos noms de variables constantes classes et fonc tions doivent permettre de d duire facilement les fonctionnalit
32. implicit_flush Off On L activation de cette directive quivaut appeler la fonction flush vider le buffer de sortie de PHP apr s toute fonction g n rant une sortie echo print etc Mettre cette directive On r duit parfois les performances et engendre du trafic r seau inutile forte charge allow_call_time_pass_ reference On Off Extrait de la documentation officielle de PHP Active ou non la possibilit de forcer les arguments tre pass s par r f rence lors de l appel une fonction Cette m thode est d pr ci e et ne sera tr s certainement plus support e dans les futures versions de PHP Zend Il est pr f rable de sp cifier directement dans la d claration de la fonction si les arguments seront pass s ou non par r f rence Nous vous encou rageons d sactiver cette option max_execution_time 30 Cette directive d termine en secondes le temps d ex cution maximum d une requ te utilisateur En production il est conseill de choisir un bon compromis laissant le temps un maximum de requ tes de s ex cuter tout en vitant l encombrement par les requ tes qui g lent 30 secondes est une bonne valeur dans la plupart des cas ASTUCE Accorder une valeur plus haute une requ te particuli re La fonction set_time_limit d finit cette directive la vol e dans un code PHP en cas de besoin Cela dit viter d en abuser est un sage engagement L memory_li
33. information de compr hension ou de communication Une m thode nouvelle est d autant plus expos e ce probl me qu elle ne poss de aucune autre documentation en dehors de la v tre Documenter utilement et avec soin est un gage l mentaire et important de p ren nit car c est par les crits que vous allez pouvoir vous rem morer les d tails de votre m thode et informer convenablement ceux qui abordent Adapt e et travaill e Une m thode permet d organiser de simplifier de gagner du temps et m me de r a liser l irr alisable gr ce l outil qu elle repr sente Aff tez votre outil pour qu il s adapte la mati re que vous allez le manipuler D finir des conventions pour la conception d applications PHP 45 CHAPITRE 2 Si vos collaborateurs sont comp tents et curieux ils accepteront votre outil s il est ing nieux et efficace En revanche il sera difficile de leur faire accepter un outil rude lourd et contraignant Impliquez les autant que possible dans les volutions de cet outil Domaines d application d une m thode Un projet est li entre autres une quipe un travail des outils des solutions fonctionnelles et techniques Vous trouverez sur la figure 2 9 les domaines d application courants abord s par les m thodes de d veloppement et de gestion de projet chaque responsable de projet de d terminer la port e des conventions et leur adaptation l existant
34. la logique m tier Il se compose d l ments qui se distinguent par la nature de la source de donn es base de donn es services web etc laquelle ils ont acc s Ces l ments sont divis s en deux parties e L objet d acc s aux donn es DAO Data Access Object assure le lien d abstrac tion entre le mod le l mentaire et la source de donn es Par exemple un acc s la table des utilisateurs de notre base de donn es sera assur par un seul objet Cela vite entre autres les redondances de code que l on trouve facilement lorsque plusieurs parties de l application acc dent aux m mes ressources e Le mod le l mentaire bas sur un DAO est une couche d abstraction permet tant d acc der aux donn es par l interm diaire des objets m tiers dont nous expli querons le principe plus loin dans cette section La vue Elle assure les aspects pr sentation l aide dun moteur compilateur de templates que nous aborderons au chapitre 13 Ceux ci sont charg s de faire le lien entre les donn es et les gabarits de pr sentation Les templates repr sentent ces gabarits et le moteur de templates construit la page HTML o le document PDF correspondant en y ins rant les donn es n cessaires Le contr leur Il fait interface entre l application et les actions de l utilisateur Toute action est lue et analys e par le contr leur frontal qui va laisser aux actions l mentaires le soin d ana lyser les d tai
35. les pratiques pr conis es par les m thodes agiles ou les architectures types comme MVC Figure 2 9 Environnement humain Les principaux domaines couverts par les m thodes Planning amp It rations Environnement technique R gles de codage Proc dures Architecture squelette Organisation de l quipe Outils utiliser M thodes de travail Tests amp qualit Philosophie du projet Gestion des versions Gestion de crise Environnement d ex cution Conventions et proc dures li es l organisation du d veloppement Avant toute d finition de r gles et proc dures visant optimiser la mise en uvre d un projet le choix de l quipe est d terminant L histoire de l Homme n est autre que l histoire de ses rapports avec lui m me et son environnement La mani re dont il sera consid r et reconnu le r le qu on lui attribuera dans l quipe et les personnes avec qui il va devoir collaborer sont autant de facteurs qui d termineront l nergie et la bonne volont qu il est pr t investir dans le projet Mais la science de l Homme est difficile car chaque individu est diff rent et porte avec lui son caract re ses pr f rences ses convictions ses croyances et un amour Organisation du projet conventions et outils PREMI RE PARTIE propre qui le rend capable de tout ou de rien M me sans tre psychologue il est pos sible d observer quelques r gles de bon sens pour c
36. par le lien que nous venons d inclure dans les sources de PHP Ce client se connecte la socket du serveur pour lui fournir le fichier et la ligne incrimin e Voici son code source minimal Code source du client 1oademacs php lt php Fonction simple d affichage de messages function message txt echo amp gt txt lt br gt echo lt h2 gt Connexion au serveur EMACS lt h2 gt n Adresse et port du serveur contacter ip 127 0 0 1 port 10000 Connexion la socket socket socket_create AF_INET SOCK_ STREAM SOL_TCP result socket_connect S socket ip port Si le serveur n est pas disponible demander l utilisateur de le d marrer if result false err Veuillez d marrer le serveur emacs Il doit err tre lanc sur l adresse ip port port message err else msg _GET f _GET 1 Assurer la qualit d un d veloppement PHP ET CHAPITRE 12 Envoi du fichier et de la ligne au serveur socket_write socket msg strlen msg Lecture de la r ponse et interpr tation out socket_read socket 2 if out OK message Votre diteur est lanc ref lt a href onClick window close gt ref fermer la fen amp ecirc tre lt a gt message ref echo lt script gt window close lt script gt else message Le serveur r pond mais il semble a
37. se perfectionner tr s rapidement gt http www expreg com Utilisation de la bande passante Plus une application est sollicit e par de nombreux clients plus les conomies de bande passante deviennent importantes Il y a plusieurs raisons cela e Faire transiter beaucoup d informations n cessite des ressources CPU et m moire que ce soit pour le serveur ou pour le client e Les d bits sont limit s de nombreuses connexions simultan es peuvent consid rablement ralentir les transmissions R duire la taille des donn es la main Figure 12 1 M nager la bande passante en r duisant la taille des donn es Ma volumineuse gt age web pag Envoi o Compression http Pr processeur tidy Remaniement la main Si vous faites transiter du HTML sur le r seau ce qui est souvent le cas lorsqu on fait du PHP la taille du code HTML et des fichiers associ s images sons etc est importante Il faut bien entendu se concentrer sur ce qui est fr quemment sollicit comme les gabarits de pages Voici quelques conseils pour r duire la taille de vos documents Assurer la qualit d un d veloppement PHP ET CHAPITRE 12 e Utilisez les feuilles de styles CSS de mani re d sencombrer le code HTML des informations redondantes couleurs styles marges etc e Veillez au poids de vos images utilisez une compression ad quate du GIF pour les formes g om triques du JPEG po
38. t d velopp s et que votre module pourra tre utilis sur tout autre type de projet d velopp avec Copix en parfaite homog n it Il est utilis aujourd hui dans des contextes tr s diff rents gestion de contenu intra nets tra abilit industrielle annuaires gestion de formulaires bases de connais sances etc et galement dans tout type d entreprise administrations industriels sant transports Quels sont selon vous les trois avantages de PHP pour les professionnels PHP est une plate forme simple installation apprentissage d ploiement multi plates formes syst mes d exploitation bases de donn es serveurs web et rapide d veloppement et ex cution C est vraiment une plate forme efficace pour tout ce qui concerne les applications dites clients l gers Pour l entreprise cela signifie un retour sur investissement extr mement rapide ce gt qui est d autant plus vrai lorsqu elle ne dispose pas d un syst me d information sp ci fique et complexe Quels sont l inverse les trois points faibles que PHP devrait am liorer Les points faibles de PHP tendent pour la plupart tre r solus avec le temps De mon point de vue il manque une interface native commune pour toutes les bases de donn es du march Toutefois l extension PDO va faire son apparition avec PHP 5 1 Il manque aussi d environnements permettant de manipuler graphiquement et rap
39. un module n est rien d autre qu un chemin relatif la racine du d p t de donn es Extraction d un module Extraction du module PEAR cvs co PEAR Extraction du module PEAR DB cvs co PEAR DB Extraction de tout le contenu du d p t de donn es CVS CO Cr er un module est une op ration simple Il suffit de se mettre dans le r pertoire contenant les donn es initiales puis de se servir de la commande import Si le r per toire courant est vide un module vide est cr Cr ation d un module Cr ation d un module partir de donn es existantes le contenu du r pertoire courant cvs import m Version initiale mon_module phpba BETA Installer et utiliser un gestionnaire de versions RE CHAPITRE 3 Op rations de base Pour obtenir la liste des op rations fournies par l ex cutable CVS il suffit dans un premier temps de taper la commande cvs help commands Pour obtenir davantage d informations sur une des op rations list es la commande cvs help lt nom_de_1a_commande gt fera votre bonheur Quelques op rations de base R cup ration des donn es du module module du d p t de donn es mon_depot cvs d space mon_depot checkout module Demande d ajout du fichier index php dans le r pertoire module admin cd module admin echo lt php phpinfo gt gt index php cvs add index php retrait du fichier home php cvs remove home php
40. une application lourde de plusieurs centaines de fichiers et inversement l dition de scripts simples pour de l administration syst me par exemple n est pas adapt e avec un diteur lourd Figure 5 2 Complexit et confort d utilisation d un diteur Confort d utilisation P Maguma OS Quanta Z PHP Edit PHP Designer Anjuta Komodo Kate Side Zend Studio PHP Eclipse jEdit Edit Scite Emacs VIM Crimson Projet de Petite taille Script shell Complexit de l diteur La figure 5 2 met en avant une g n ralisation plus ou moins exhaustive du confort d utilisation constat de plusieurs diteurs par type de projet Faut il homog n iser les outils d dition Cette question est en r alit mal choisie car elle r pond un besoin l homog n isa tion des d veloppements par une solution homog n iser les outils d dition qui n est pas forc ment adapt e Int ressons nous plut t ce qu il faut r ellement homog n iser e Le formatage du code source d un diteur un autre peut diff rer g n rer des modifications inutiles dans le d p t de donn es et des incoh rences de forme e Les habitudes prendre un ou plusieurs diteurs aux fonctionnalit s similaires permet aux d veloppeurs de mieux s entraider sur les fonctionnalit s surtout lorsqu elles sont nombreuses e La diversit des fonctionnalit s l utilisation d
41. une solution simple et performante L architecture REST est une approche SOA simplifi e Elle permet un change simple entre deux applications les requ tes sont envoy es dans PURL GET et les r ponses sont renvoy es par le serveur g n ralement HTTP au format XML REST est une proposition d architecture et non un protocole bien d fini Il n existe pas de description de REST sur le site du consortium W3C Pour mettre en uvre une telle solution nous allons utiliser les outils de manipulation XML standards tels que SimpleXML SAX ou DOM Le principe de REST est simple une requ te GET est envoy e au serveur avec la demande du client puis un flux XML contenant la r ponse est renvoy par le serveur Figure 14 12 Architecture de type REST F L architecture REST s Question requ te GET Client z erveur http server method ien ia e 2 LANP J2EE R ponse flux XML LANP J2EE 83 NET me PRE PCI NET lt xml version 1 0 gt EJ Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Dans lexemple ci apr s l application serveur renvoie le d tail d un circuit touristique sous la forme d un flux XML en r ponse une requ te HTTP Requ te HTTP envoy e au serveur REST http server restserver php method travel getDetai1 amp id 3 Contenu XML renvoy par le serveur lt rsp stat ok gt lt method gt travel getDetail lt method gt lt format gt
42. Choisir un diteur REX CHAPITRE 5 ni res versions il permet galement d diter des sources de scripts et g re la plupart des fonctionnalit s de base d un diteur PHP Il int gre d ailleurs des fonctionnalit s de g n ration de code PHP en mode wysiwyg Il est l diteur id al pour les int grateurs en charge de cr ation de templates HTML CSS XML ou de la partie Vue du motif MVC gt http www macromedia com software dreamweaver RESSOURCE Un ouvrage sp cialis dans l utilisation de PHP avec Dreamweaver L ouvrage suivant est d di l utilisation de PHP et MySQL avec Dreamweaver Il est id al pour le graphiste qui souhaite exploiter toutes les possibilit s de cet diteur dans un environnement PHP PHP MySQL avec Dreamweaver MX 2004 de Jean Marie Defrance ditions Eyrolles WebExpert Un diteur sp cialis dans le d veloppement d applications HTML ASP et PHP Il est adapt aux applications de taille moyenne et int gre un certain nombre d outils pratiques tels qu un v rificateur de liens un gestionnaire d astuces un correcteur orthographique etc gt http softwares visicommedia com fr products webexpert PHPEdit PHPEdit est un bon diteur commercial sp cialis pour PHP Il int gre tout ce que Pon attend d un diteur s rieux ainsi que de nombreuses fonctionnalit s de personna lisation Gr ce cet diteur vous pouvez facilement g n rer vot
43. Il est conseill de faire cela sur un tableau blanc et d y reporter galement les informa tions sur la priorisation de vos t ches avant de commencer l installation Place du framework dans l environnement Le framework cadre de travail est un outil haut niveau principalement crit en PHP qui fournit aux applications des fonctionnalit s logicielles compl mentaires vos travaux ainsi que des outils de maintenance Il se situe proximit des applica tions PHP Il faut avoir conscience qu une application li e un framework ou une biblioth que ne sera plus compl tement autonome puisque d pendante de cet outil En revanche le d veloppement de plusieurs applications sp cifiques mettant en uvre des fonctionnalit s et des objets similaires ont tout int r t poss der un fra mework Outils utiles l installation de l environnement Pour les postes de d veloppement sous Windows ou Mac OS il existe des installeurs qui se chargent de mettre disposition la plupart des outils utiles la mise en place d un environnement d ex cution local Ces outils s appellent WAMP pour Win dows Apache MySQL PHP et MAMP pour Mac OS Apache MySQL PHP Pour l environnement de d veloppement sous Unix ou Linux il existe des syst mes de gestion de paquetages qui se chargent d installer et de mettre jour vos diff rents composants Ces syst mes ont l avantage d tre faciles et rapides utiliser U
44. Le but est de vous donner les moyens d appr cier quel point et quel niveau PHP peut r pondre vos besoins En Best Practices PHP Qu est ce que PHP PHP PHP Hypertext Preprocessor est une plate forme compos e d un langage de programmation tr s complet et de nombreux outils pour le d veloppement Elle s adapte tr s rapidement aux technologies mergentes et se voit de plus en plus uti lis e dans des d veloppements web dynamiques professionnels et Open Source Voici quelques unes de ses caract ristiques principales e un tr s bon compromis entre fiabilit et rapidit d ex cution e une plate forme avant tout sp cialis e pour le d veloppement de sites web dyna miques de toute taille e une plate forme pratique et compl te adapt e aux applications en ligne de com mande e une syntaxe compl te souple et permissive qui ne rebute pas les d veloppeurs d butants et ne limite pas les utilisateurs confirm s e un langage proc dural et un langage orient objet e un outil tr s complet dot de nombreuses fonctionnalit s extensions et biblio th ques PHP 5 et ses nouveaut s propulse PHP dans le monde des plates formes d entre prises comme Net ou J2EE quoi sert PHP L utilisation de PHP est principalement d di e aux d veloppements de sites web dyna miques pour toutes sortes d applications du simple forum au supermarch en ligne PHP int gre de tr s nombreuses extensio
45. Le gestionnaire de page avec la m thode de fabrique class PageManager extends DataManager private content Content object public function __construct Content content this gt content content public function getPage type html type strtolower type switch type case html return new HTMLPage this gt content Les motifs de conception Design Patterns CHAPITRE 10 case xml return new XMLPage this gt content case txt case text return new TXTPage this gt content trigger_error Page type type unknown R F RENCE Le motif Factory dans la documentation officielle de PHP Un clin d il est donn au motif Factory dans la documentation de PHP l adresse ci dessous Un exem ple est notamment disponible sur le chargement d un driver de bases de donn es gt http www php net manual fr language oop5 patterns php La fabrique abstraite Abstract Factory Principe de la fabrique abstraite Comme nous l avons vu pr c demment le r le d une fabrique est de construire des objets La fabrique abstraite propose une interface AbstractFactory charg e de construire une famille d objets produits ProductAl ProductA2 etc sans avoir sp cifier le nom de leur classe concr te UML Figure 10 3 Le motif fabrique abstraite Abstract Factory AbstractFactory CreateProductA CreateProductB A TAN
46. ME PARTIE Interactions avec d autres plates formes Possibilit s offertes par PHP La souplesse de la plate forme et la diversit de ses extensions font de PHP un outil id al d interop rabilit PHP peut communiquer nativement couplage fort avec des programmes crits en C et C par l interm diaire des extensions Il peut galement communiquer avec des applications crites en Java par l interm diaire de ponts sp cialis s En plus de cela de nombreuses solutions d interaction sont offertes gr ce la par faite ma trise des services web et des protocoles de communication PHP poss de pour cela des extensions C performantes que nous aurons l occasion de d couvrir dans ce chapitre Figure 14 1 Couplage fort interactions natives Couplage fort et couplage l che o Pont API ce Couplage l che interactions via protocole Application j Services Web b Application 1 2 PHP Java C etc Di Fichiers d changes PHP Java C etc Source interm diaire CE Couplage fort Historiquement seul le couplage fort permettait une r elle interaction entre deux technologies diff rentes Cette solution consiste mettre en place une API donnant un acc s natif l environnement d une technologie partir d une autre objets varia bles etc Java est la technologie g n ralement choisie pour les applications m tier et PHP pour l environnement web Faire interagir PHP et Java Deux
47. Observer produits produits Las Ni Subject Observer attach entr e Observer Aa PLUS Livres Eyrolles _observerState Lu Li Ajout ou retrait Notification changement de prix return this gt _observerState this gt _subjectState subject gt getState Changement Update cache prix Mise en pratique Dans notre exemple de la figure 10 17 l objet Livres Eyrolles d livre un tat des stocks et des prix Lorsque l objet est sollicit pour une op ration sur les livres il met une notification afin que les observateurs Ajout ou retrait et Changement prix effectuent des v rifications et ventuellement des mises jour Imaginons qu une modification de prix ait t d tect e Alors l observateur Changement prix effectue une mise jour du cache des prix pour le catalogue en ligne et modifie l tat observ _observerState Mod lisation en UML pour PHP DEUXI ME PARTIE RETENIR Mettre en place des observateurs persistants Dans de nombreuses situations l tat des diff rents observateurs devra tre persistant entre deux requ tes sessions utilisateur Vous pouvez pour cela vous orienter vers des solutions comme SRM monter une session sp ciale ou exploiter les m canismes de m moire partag e d crits au chapitre 12 La m thode update de la classe abstraite Observer peut impl menter un m canisme de sauvegarde sur disque des tat
48. PHP CHAPITRE 8 Les cas d utilisation li s au d veloppeur Charger un bogue dans l diteur Valider une correction NS i D veloppeur Visualiser les bogues d tect s xecuter une commande D packager une application Packager une application Figure 8 5 Cas d utilisation du d veloppeur Les cas d utilisation li s l diteur Charger un bogue Editeur Figure 8 6 Cas d utilisation de l diteur Les cas d utilisation li s l agent de monitoring Enregistrer un incident Agent de monitoring Figure 8 7 Cas d utilisation de l agent de monitoring Mod lisation en UML pour PHP DEUXI ME PARTIE Figure 8 8 Symboles utilis s pour le Un lee diagramme de cas d utilisation paquetage Un cas d utilisation Une extension Un cas d utilisation 2 l ee extend Une extension Un cas Un a e d utilisation 3 Sur la figure 8 3 un paquetage est un symbole g n ral utilis dans de nombreux diagrammes UML pour faire des regroupements Ici nous Putiliserons par exemple pour regrouper les cas d utilisation d un acteur particulier Un cas d utilisation repr sente une fonctionnalit g n rale laquelle un ou plusieurs acteur s a ont acc s Un acteur est un l ment qui agit sur le syst me Une extension est une relation entre deux cas d util
49. cessite une certaine discipline Comme nous l avons vu pr c demment s imposer des conventions afin d assurer la p rennit et la fiabilit des d veloppements s av re primordial Savoir d velopper en PHP est un art que l on ma trise peu peu par la pratique et par une grande diversit de connaissances C est un peu comme savoir piloter un avion c est tr s facile au d but il suffit de tirer sur le manche pour d coller mais cette seule connaissance ne fait pas de vous un bon pilote IE Best Practices PHP Les m thodes agiles pour le d veloppement d applications PHP Elles ont l avantage d tre adapt es l esprit PHP Elles privil gient l mergence de la technologie le changement l acquisition rapide de connaissances la souplesse et la simplicit Conna tre une m thode agile eXtreme Programming Crystal Clear etc en plus de PHP pour du d veloppement en quipe est un atout consid rable pour atteindre rapidement le stade des d veloppements fiables Le chapitre 2 aborde les pratiques et les valeurs des m thodes agiles Il est un bon point de d part si vous souhaitez en adopter une PREMI RE PARTIE Organisation du projet conventions et outils Nous aborderons dans cette partie les premi res armes du d veloppement efficace en PHP de bonnes conventions et des outils de qualit De l organisation de l quipe projet celle de l environnement d ex cution en pa
50. d finition 202 participation active 202 d p t de donn es suppression 61 descripteur de d ploiement 394 designer 48 d veloppement monitoring 146 optimisation par la g n ration 361 simplifier 137 d veloppeur 48 Dia app de mod lisation 199 diagramme cas d utilisation 184 composition de classes 190 d activit 195 exemple pratique 196 de classes 190 agr gation 191 composition 191 de conception 192 194 participantes 193 de collaboration 197 198 de s quence 195 use case diagramme 184 dialogue classe 189 directeur technique 49 dirname fonction 392 disque criture sur 291 optimisation 291 documentation g n rateur 326 documents XML 255 DOM Document Object Model 260 avantages et limites 261 classes 260 d finition 258 principe 260 XPATH 261 domain component LDAP 177 DOMCharacterData 260 DOMNode 260 DOMT ext 260 donn es administration 136 droit des utilisateurs serveur 407 dval 299 E criture code source 52 r gles l mentaires 53 effet de bord 411 exemple 411 Emacs 47 utilisation pour les erreurs 302 entit classe 189 MCD 169 types 191 entit association diagramme 169 environnement d ex cution automatismes 394 caract ristiques ma triser les 382 s curit assurer la 406 Zend Platform 426 quipe choix 45 coacher 31 organisation XP 34 r partition des r les 46 ereg_replace 293 ErisX framework 154 erreur 404 MVC 42 configuration 391 courante 5
51. de l architecture 29 logique 265 mise jour compilation 400 mise en cache 369 fr quence 337 Smarty 337 mod_gzip 295 mod _layout 384 mod_php 384 mod_proxy 384 mod_rewrite 384 Model Driven Architecture voir MDA mod le base de donn es 169 choix 203 conceptuel de donn es 169 MVC 40 41 physique de donn es 169 170 tableau blanc 203 transfert de XMT 200 utilit 202 mod lisation 182 agile 202 analyse fonctionnelle 183 axes 182 bases de donn es 169 cas d utilisation 184 collective 202 cycle 204 tapes 182 exigences et contraintes 184 expression des besoins 183 identification des acteurs 184 Model View Controler MVC 39 module installation 388 liste 389 monitoring outils 417 r seau de tests 421 ressources monitorer 421 moteur de templates 332 choix 335 contraintes 341 mise en cache 337 template PHP 340 utilit 332 motif de conception 222 comportement 238 cha ne de responsabilit 238 commande 239 tat 244 iterateur 240 m diateur 242 observateur 243 patron de m thode 245 State 244 strategie 245 Template of Method 245 cr ation 222 Abstract Factory 227 Builder 228 Es fabrique 222 abstraite 227 Factory 222 monteur 228 prototype 229 singleton 229 familles 222 MVC 39 structuration 232 adaptateur 232 Bridge 233 composite 234 d corateur 235 fa ade 236 MVC 233 pont 233 Proxy 236 utilit 222 motif de refactoring 329 MPD Mod le physique de donn es 169 170 multiplici
52. document XML si le mod le s y pr te Impl mentations possibles qui doivent tre traduits au format SOAP ou XML RPC pour tre transmis La construction de documents XML partir de tableaux via les templates offre norm ment de possibilit s et reste tr s abordable en terme de simplicit de mise en uvre L impl mentation la plus courante est celle du template XML qui g n re un docu ment en it rant sur un ou plusieurs tableau x Par exemple un tableau contenant une liste d actualit s sera transform tr s simplement en flux RSS travers ce pro c d 12 Assurer la qualit d un d veloppement PHP Ce chapitre est un zoom sur le d veloppement Savoir mettre en place une bonne architecture logicielle conna tre son environnement d ex cution ma triser les forma lismes comme UML Merise ne suffisent pas se pr tendre bon d veloppeur Le d veloppement efficace c est galement des r flexes simples bas s sur l exp rience et une parfaite ma trise des possibilit s offertes par PHP Dans un premier temps c est sur les petits r flexes d optimisation que nous allons nous concentrer Nous verrons pr cis ment comment ma triser le comportement de la m moire et des ressources comment exploiter les exceptions les cha nes de caract res et les boucles Nous nous int resserons ensuite aux tests unitaires Nous verrons ce qu ils peuvent apporter une application PHP et comment les e
53. e les tests unitaires qui effectuent des v rifications internes sur une application e les tests de recette ou tests de r gression qui effectuent des v rifications de l ext rieur simulant les actions d un utilisateur Les tests unitaires peuvent tre utiles pour valider le fonctionnement au niveau appli catif entre la couche HTTP et l environnement d ex cution En effet e La surveillance HTTP n est pas toujours en mesure de d tecter certains dysfonc tionnements alors que les tests unitaires peuvent simuler nimporte quel compor tement sur toute partie du programme e Le comportement de l environnement d ex cution peut faire voluer celui du programme dans ce cas les tests unitaires peuvent d tecter ces volutions Les tests de r gression de l environnement de recette peuvent galement tre repris pour un suivi r gulier des applications en production Ainsi vous testez non seule ment la disponibilit d une application mais galement son bon fonctionnement Ceci est d autant plus utile si vos pages sont dynamiques Assurer la disponibilit s curit et maintenance 43 CHAPITRE 16 Rapport du moniteur AFUP Liste Erreurs g n rales Statistiques P riode du 01 07 2005 au 01 08 2005 statistiques glahales erreurs d indisponihilt autres erreurs erreurs maniteur graph quatidien graph annuel sc nanns Juillet j 2005 zj 0K Disponibilit du service Disponibilit
54. error Analyseur Tests de syntaxique unitaires recette R it ration sur une nouvelle application _ Mettre en place l environnement d ex cution pour le d veloppement EUX CHAPITRE 4 G n ration du rapport de qualit Le rapport de qualit fournit un r sum des informations re ues par les proc dures de contr le Il peut galement maintenir un historique de ces informations afin de permettre la consultation d archives et g n rer des rapports chronologiques Figure 4 12 Exemple de page Nombre d applications d accueil simple d un Nombre de tests unitaires pass s rapport de qualit Nombre de tests unitaires en chec Indice de qualit global du checkstyle 100 1 2 3 4 5 6 7 8 9 10 11 12 12005 O Tests unitaires Tests de recette A Checkstyle Une g n ration minutieuse de ce rapport n est pas la priorit d un environnement qui se construit En revanche il peut tre utile de s y pencher lorsque l environnement est amen grossir Quoi qu il en soit une impl mentation efficace des t ches de con tr le est avant toute chose n cessaire PROGRAMMATION Checkstyle PHP Le checkstyle est une op ration consistant parser lire analyser le code source et de v rifier s il est bien crit Les crit res concern s sont souvent la longueur des lignes et des fonctions l indentation la disposition des instructions la pr sence des commentaire et l utilisation d
55. finit un grand nombre de possibilit s d it rations sur les objets et dans d autres domaines syst me de fichiers documents XML etc Il est possible d it rer sur les propri t s d une classe ou de d finir une politique d it ration de toute pi ce Par exemple vous cr ez un objet Products qui it re sur les l ments d une table du m me nom dans une base de donn es de mani re ce que foreach products fournisse les enregistrements de la table Des exemples sont disponibles dans la documentation l adresse suivante gt http www php net manual fr language oop5 iterations php Pour en savoir plus sur la SPL et ses possibilit s vous pouvez vous rendre sur sa documentation officielle gt http www php net manual fr ref spl php Conseils d usage pour am liorer la performance des objets L am lioration des performances et des possibilit s de mise en uvre de la POO a t largement prise en compte dans les volutions de PHP 4 PHP 5 Dans cette derni re version les objets sont par d faut pass s par r f rence ce qui vite d j toute redondance inutile Mod lisation en UML pour PHP DEUXI ME PARTIE L instanciation d une classe est elle utile Cr er des objets partir d une classe n est pas forc ment utile pour b n ficier de cer taines fonctionnalit s L acc s aux constantes et aux m thodes statiques est parfaite ment possible comme
56. fonctions constantes et varia bles Figure 13 1 Principe du g n rateur n Commentaires de documentation i 1 G n rateur 4 hpdoc pnp E Y Documentation Structure du code 1 Gabarit g n r e Une documentation cr e automatiquement peut faire gagner beaucoup de temps si votre application devient complexe Elle permet galement de garder un il sur la structure g n rale de votre d veloppement ASTUCE Int gration du g n rateur l diteur Certains diteurs comme PHPEd ou Zend Studio int grent un g n rateur de documentation accessible d un simple clic Vous trouverez de plus amples informations dans le chapitre 5 consacr aux diteurs Utilisation de PHPDocumentor PHPDocumentor est un g n rateur de documentation complet pour PHP qui se base sur les conventions de la phpdoc Il est maintenant int gr au projet PEAR Installation de PHPDocumentor pear install PhpDocumentor downloading PhpDocumentor 1 2 3 tgz Starting to download PhpDocumentor 1 2 3 tgz 2 656 621 bytes LR Te me an ne ee PR E done 2 656 621 bytes install ok PhpDocumentor 1 2 3 Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Pour configurer votre projet vous disposez d une documentation compl te l adresse suivante http manual phpdoc org La cr ation automatique de la documentation se fait via une interface HTML ou en ligne de commande Cette derni
57. gt type gt lt php echo escale gt titre gt lt h3 gt lt h4 gt Visites lt h4 gt lt ul gt lt php foreach escale gt visite AS visite gt lt li gt lt php echo visite gt lt li gt lt php fin foreach gt lt ul gt lt php fin foreach gt lt body gt lt html gt Ce client affiche le contenu d un circuit touristique comprenant son intitul sa dur e et ses tapes XML RPC une autre alternative XML RPC est comme son nom l indique un protocole RPC Remote Procedure Call ou Appel de Proc dure Distante bas sur XML Les appels de proc dures par le client se font en XML et les r ponses sont en XML galement PHP poss de une extension permettant d utiliser XML RPC en client et en serveur Une extension PEAR existe aussi PEAR XML RPC plus lente mais r put e plus stable que l extension C La documentation en ligne sur XML RPC vous en fera conna tre davantage sur cette solution d interop rabilit aujourd hui de plus en plus d laiss e pour SOAP gt http www php net manual en ref xmlrpc php Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE G n ration de code quoi sert la g n ration de code La g n ration de code c est un peu comme la r cursivit il ne faut pas en abuser ni aller trop loin En revanche elle est tr s pratique dans certaines situations Notons que nous parlerons ici de g n rateurs de c
58. il permet de mani puler des donn es complexes et volumineuses Son connecteur avec PHP est perfor mant et tr s pratique surtout depuis la sortie de PHP 5 En terme de fonctionna lit s MySQL reste simple mais progresse doucement Il proposera bient t les vues les proc dures stock es et la gestion des contraintes d int grit Exemple d acc s MySQL avec PHP mysqli new mysqli localhost user pass database if mysqli_connect_errno printf Echec de connexion s n mysqli_connect_error exit query INSERT INTO address_book first_name last_name phone_number VALUES stmt mysqli gt prepare query stmt gt bind_param sss firstname lastname phone firstname Guillaume lastname Pon on phone 01 23 45 67 89 stmt gt execute stmt gt close mysqli gt close Organisation du projet conventions et outils PREMI RE PARTIE PostgreSQL Dommage que PostgreSQL ne soit pas aussi populaire que MySQL en France Ce SGBD relationnel est tr s complet et ce depuis longtemps Ses performances en lecture sont globalement l g rement inf rieures celles de MySQL mais largement suffisantes pour la plupart des applications Caract ristiques de PostgreSQL Comme nous le disions PostgreSQL poss de l avantage d tre r ellement tr s com plet requ tes imbriqu es transactions commit rollback gestion des cl s tr
59. l instant z Un exemple simple de gestion d une application est d crite sur la figure 2 16 qui se lit de bas en haut 1 La premi re tape consiste importer les fichiers existants au d but des d velop pements Un module conteneur de notre application dans le d p t de donn es est cr avec trois premiers fichiers qui prennent d office la version 1 1 D finir des conventions pour la conception d applications PHP CHAPITRE 2 V1 3 V1 2 B RELEASE_1_0_0 RELEASE_1_0_0 RELEASE_1_0 0 5 Modification des fichiers 1 et 4 commit v1 2 v1 1 v1 1 Clich RELEASE_1_0_0 dela a 3 Modification du fichier 2 et retrait du fichier 3 commit H s Av1 1 V1 2 Fichier 2 hi v1 2 A Fichier 1 Av1 1 v1 1 Fichier 1 Fichier 2 H v1 1 2 Modification du fichier 1 Fichier 4 et ajout du fichier 4 commit p 1 Cr ation du module mon_projet import Fichier 3 Figure 2 16 Prendre un clich tag d une application un instant t 2 En deuxi me tape des travaux ont t effectu s sur l application le fichier 1 est modifi et le fichier 4 est cr 3 Ensuite le fichier 2 est modifi son tour et le fichier 3 est supprim cette tape l application est op rationnelle bien que minimale Il serait judicieux de se donner les moyens de conserver cet tat de notre application afin d en faire une premi re version livrable L objectif tant de pouvoir extraire l applicatio
60. mettre jour dans le d p t de donn es Lorsqu un commit a t effectu les autres d veloppeurs doivent faire un update de leur export afin de le mettre jour avec les derni res modifications enregistr es dans le d p t 5 Probl me une erreur bloquante a t effectu e et le fichier affect a t valid dans le d p t Vous devez alors revenir la version pr c dente Pour cela soit vous faites un checkout du fichier sur la version pr c dente puis vous remplacez le fichier incrimin soit vous utilisez l op ration revert si celle ci est disponible Organisation du projet conventions et outils PREMI RE PARTIE 6 Votre projet volue et vous devez r guli rement extraire des versions stables afin de les livrer L op ration tag va vous permettre de prendre un clich de vos sources PHP un instant t on parle alors de figer une version Il vous suffira ensuite de faire un export ou un checkout de votre application en sp cifiant le nom du tag cr pour extraire les fichiers de l application tels qu ils taient l instant du tag 7 un certain stade de votre projet vous voulez cr er une version 2 de votre appli cation tout en continuant maintenir la premi re version Or vous n avez qu un seul module comment faire Vous avez ici la possibilit de cr er une branche toujours gr ce la commande tag accompagn e de l option ad quate Une fois cr e vous pouvez extraire la br
61. n ration de code font appel des disciplines complexes qui demandent beaucoup de travail et de r flexion Mise en cache La pratique de la mise en cache s inscrit dans une volont d optimisation des perfor mances L id e principale est d conomiser des ressources en vitant de solliciter un processus lourd plusieurs reprises pour des traitements redondants En PHP la mise en cache est une pratique courante Elle intervient dans l architec ture des applications poss de de multiples outils et peut faire l objet d une strat gie plusieurs niveaux La mise en cache augmente les performances d une application et r duit la consom mation des ressources En revanche elle apporte une complexit suppl mentaire l architecture et peut d grader l int grit des donn es si les param trages ne sont pas ma tris s Il vous appartient d exploiter la mise en cache bon escient CONSEIL G n rer la mise en cache la demande par un handler 404 La remarque sur l exploitation de l erreur 404 dans le mod le MVC au chapitre 2 illustre une m thode pratique pour g n rer le cache la demande Si un fichier n existe pas une erreur 404 se produit La page d erreur habituelle est remplac e par un contr leur qui analyse la requ te cherche si la page existe la g n re et l affiche si c est le cas Ce m ca nisme peut tre d clar pour chaque virtualhost dans un fichier htaccess Mise en cache sur me
62. nes root nemo spacc zp ZendMatform ancel gt roct nemo spacc zp ZendPlatform latform 1 1 1 of your he document root d ry location wt your web documents are stored ancel root nemo spacc zp ZendPlatform Exploiter un environnement d ex cution cl en main CHAPITRE 17 Figure 17 11 Installation de la Zend Platform contr le des d mons par l installeur R F RENCE En savoir plus sur l installation et la mise en uvre de la Zend Platform Une documentation compl te sur ce produit est disponible sur le site de Zend Technologies Vous y trou verez notamment les documents de prise en main le manuel d utilisation et la possibilit de tester la Zend Platform pendant 1 mois ces services peuvent voluer au cours du temps http zend com store products zend platform Mise en place d une application sur la Zend Platform La Zend Platform est capable de contr ler l ensemble des applications PHP instal l es sur ses n uds En d autres termes l installation d une application consiste sim plement l installer sur un serveur comme nous le ferions sans la Zend Platform Une fois votre application install e les param tres de performance de d bogage et de monitoring sont directement accessibles sur l outil d administration Avenir de la Zend Platform et de ses d riv s Les
63. nes Prenons les deux prototypes suivants Deux prototypes de m thodes Prototype A function getParams tab_user Prototype B function getParams LdapUser user e Le premier prototype A d crit une m thode de classe qui semble extraire d un tableau les param tres d un utilisateur avant de les renvoyer e Le deuxi me prototype B semble extraire d une classe entit LdapUser les param tres d un utilisateur avant de les renvoyer Lequel de ces deux prototypes sera le plus facile exploiter selon vous Le probl me du premier est que vous n avez aucune information sur la structure du tableau passer en param tre ce qui vous oblige aller chercher de la documentation suppl mentaire si elle existe ou analyser le corps de la m thode Exploiter les points forts de PHP les m ta structures 23 CHAPITRE 11 Pour le prototype B nous savons que le param tre passer est de type LdapUser Si la variable pass e en param tre n est pas de ce type PHP affichera une erreur LdapUser est une classe qui sert de moule un contenu sp cifique Avant d appeler notre m thode getParams nous allons d abord construire un objet partir de la classe LdapUser Utilisation d un objet Une classe minimale LdapUser class Ldaplser public uid public cn Cr ation d un objet de type LdapUser 1dapUser new LdapUser Cr ation de l objet qui contient la m
64. on souhaite mettre en place un fichier de configuration ou de donn es bas sur la simplicit EUX Organisation du projet conventions et outils PREMI RE PARTIE S CURIT Attention la s curit de vos donn es sensibles Une erreur classique consiste nommer son fichier config 1ini et le mettre dans un r pertoire conf ou la racine accessible n importe qui par l interm diaire d un simple navigateur Si ce fichier de con figuration comporte des donn es sensibles telles que les informations d acc s la base de donn es cela constitue une grave faille de s curit Si votre fichier de configuration comporte des donn es sensibles il est conseill de faire en sorte que l on ne puisse pas y acc der de l ext rieur Dans tous les cas il est plus prudent d viter d utiliser un fichier ini Il vaut mieux se servir d un fichier PHP que l on nommera par exemple config php afin que son interpr tation emp che l affichage du contenu depuis l ext rieur Formats sp cifiques HTML PDF etc PHP permet de traiter de nombreux formats de donn es notamment gr ce la diversit de ses extensions Acc s HTML gr ce la librairie tidy acc s PDF par les librairies de manipulation PDF etc La plupart de ces formats sont utilis s pour l affichage convivial de l information Ils ne sont en contrepartie pas adapt s au stockage intelligent et r utilisable comme XML INI LDAP et les bases de
65. passement de capacit comme celui ci Ce code affiche Il y a O0 toiles dans l univers value int 478975849374859734895784934 echo Il y a value toiles dans l univers Causes possibles Dans 98 des cas vous n avez pas mis jour l un de vos programmes Il se peut qu il s agisse d une attaque sur une faille non r pertori e mais ce cas est tr s rare et g n D finition des exigences pour l exploitation QUATRI ME PARTIE ralement r serv aux syst mes importants banques grosses soci t s qui justifient l effort d investigation fourni par l auteur du hack Actions de pr vention Mettez r guli rement vos programmes jour Sur les syst mes Unix il est possible d automatiser ces mises jour avec des outils comme CVSUP urpmi portupgrade etc Sympt mes et attitudes adopter en cas de probl me Les sympt mes sont tr s divers ils d pendent du type de faille et de son importance Si votre syst me pr sente des comportements incertains et si vous avez un doute ayez toujours le r flexe de v rifier les versions de vos programmes et mettez les jour si possible Certains doivent tre recompil s ou r install s d autres n cessitent des patchs disponibles sur le site de l diteur Le flood ou d ni de service D finition Le flood est g n ralement g nant car il est difficile de l radiquer compl tement de l int rieur Ce proc d consiste r unir pl
66. produire des applications web r utilisables bas sur le module perl CGl Application et le moteur de templates Smarty Ce projet est inactif l heure actuelle Copix est un framework de d veloppement capable de prendre en charge la majeure partie des probl matiques r currentes des applications web donn es affichage droits Il dispose galement des briques utilitaires classi ques que l on peut attendre d un environnement de d veloppement efficace Cerebral Cortex est un framework sp cialis pour le d veloppement rapide d applications complexes Il exploite PDO et SOAP Un framework PHP 5 sp cialis pour le d veloppement d applications web Ce framework exploite le motif MVC pour le d veloppe ment d applications web Il poss de un processus de cr ation de formulaires ainsi qu un syst me de packa ging Un framework destin produire rapidement des d ve loppements s curis s et robustes Il poss de de nom breux outils int ressants bas s sur des motifs de conception MVC Singleton amp Factory une porte d entr e sur les librairies PEAR des outils de d bogage et de construction d applications web etc Un framework orient objet PHP 5 qui privil gie la s curit et la simplicit pas de bidouillage URL http www carthag org http castor 2le net http sourceforge net projects cep http cgiapp sourceforge net http www copix org http crtx org http www erisx
67. prototype la suite des op rations fut un d sastre les r gles m tier criti ques pourtant valid es taient modifi es r guli rement les utilisateurs peu impliqu s ne testaient pas l application mise disposition les donn es reprendre contenaient des incoh rences et l application fut pourtant valid e en l tat et mise en production Au final nous avions un produit qui ne correspondait pas aux besoins des utilisateurs terrain et certains processus critiques de l application ne sont pas utilis s PHP s il est efficace ne dispense pas les intervenants quels qu ils soient de faire preuve de rigueur R F RENCE En savoir plus sur G rald Cro s G rald Cro s est impliqu dans de nombreux projets au service de PHP dont le moteur de templates Smarty le framework Copix et l diteur Side Pour en savoir plus vous pouvez visiter son site Internet l adresse suivante gt http www gcroes com Perrick Penet responsable de la soci t No Parking No Parking est une soci t de service lilloise sp cialis e en d veloppements PHP sur mesure Son produit phare OpenT ime un logiciel complet et personnalisable de gestion du temps pour l entreprise conna t de nombreuses r f rences dans le monde professionnel Perrick Penet est fondateur et g rant de la soci t No Parking Son t moignage porte essentiellement sur les m thodes de d veloppement qu il a d cid de mettre en p
68. r sultats C est vrai pour les cha nes de production de voitures a l est galement pour la gestion d un projet Ces proc dures concernent plusieurs aspects de la gestion de projet que nous pouvons citer ici e les relations entre les diff rents membres du projet e les actions li es la qualit des d veloppements e les actions li es la maintenance de l application Les proc dures doivent tre planifi es elles ont un d but une fin et ventuellement des it rations dont on d terminera la fr quence si vous choisissez d utiliser une m thode agile comme l eXtreme Programming int ressez vous la notion de plani fication it rative Dans la mise en place de vos proc dures vous devez penser e Au partage coh rent de vos ressources Le responsable d exploitation par exemple est charg avec ou sans sous traitant de tenir un planning de livraisons pour plu sieurs projets Un d faut de planification ou trop d exceptions faites aux proc du res de livraisons peuvent g n rer des probl mes et des retards qui se r percutent sur l ensemble des projets en cours e Aux probl mes impr vus Ils ne doivent jamais tre report s ou ignor s Plusieurs concertations r guli res et efficaces doivent avoir lieu entre les membres du pro jet Le travail effectuer peut tre d coup en it rations afin de mieux contr ler la progression du projet D finir des conventions pour la conception d app
69. re alternative est int ressante car elle permet l int gration de la g n ration une routine automatique La g n ration de la documenta tion est li e un fichier de configuration qui indique PHPDocumentor o se trou vent les sources int grer la documentation Figure 13 2 5 Documentation Mozilla Firefox x Une documentation Ele Edit View Go Bookmarks Iools Help A To do List ProductSearchquer retourn e par Class trees i Index of elements i PHPDocumentor F Perr Root class ProductSearchResult CFG ProductSearchResult DataCleaner TurboProductResult DataFinder E Kernel Root class ProductsTools E UnksManager E PagesManager e ProductsTools E PagesResult ProductsManager W ProductSearchQuery TurboProductsManager E FroductSearchResult PushManager E ProductsManager PushEditor E ProductsTools E PushEditor Root class Smarty E PushManager E RequestManager d arr E Smarty db RequestManager a Tpl om E TurboProductResult E TurboProductsManager E XMLProcessor ZoneEditor B ZonesManager gt fa Functon s p aff D characterData P ZonesManager gt defaultHandler PagesManager gt easylink z ZoneEditor Root class XMLProcessor Root class ZonesManager XMLProcessor Pratiquer le remaniement refactoring Qu est ce que le remaniement Avez vous d j t confront une fonction ou une classe de
70. t d velopp es dans Subversion Leur utilisation est dans la mesure du possible la m me Les r pertoires et les propri t s de fichiers sont versionn s au m me titre que les fichiers Le d placement et le renommage des fichiers est possible l historique des ver sions est maintenu Une int gration tr s r ussie Apache WebDAV permet d tendre les possibilit s de gestion des droits et de la s curit Une gestion simplifi e et am lior e des branches et des tags permet de gagner de l espace disque et du temps Installer et utiliser un gestionnaire de versions RES CHAPITRE 3 e Le transfert des diff rences entre deux versions d un m me fichier m me binaire permet d conomiser des ressources tous niveaux r seau processeur m moire e L utilisation en ligne de commande est am lior e toutes les sorties sont interpr tables et les messages sont en fran ais Pour obtenir davantage d informations vous pouvez vous rendre l adresse suivante gt http subversion tigris org Installation L installation de Subversion est un jeu d enfant Si vous devez installer un client sous Windows utilisez sans h siter TortoiseSVN qui s int grera tr s astucieusement votre explorateur gt http tortoisesvn tigris org Pour installer un serveur et un client e Sous Windows vous disposez d un programme d installation tr s simple sur le site de Subversion http subv
71. thode getParams paramsManager new ParamsManager O0 Remplissage de notre objet 1dapUser gt uid gponcon ldapUser gt cn Guillaume Pon on Appel de la m thode getParams params paramsManager gt getParams 1dapUser Les avantages de l utilisation d un objet sont les suivants e La description d un objet est explicite Sa documentation est la structure de sa classe e Si chaque fonction ou m thode de votre application travaille avec les m mes objets vous avez peu de risque de vous retrouver avec des incompatibilit s sur les donn es Pour aller plus loin vous pouvez aussi travailler sur des objets diff rents h rit s d une m me classe ou interface afin de les rendre compatibles entre eux nous abordons ici le concept de polymorphisme e Les param tres d une classe contrairement un tableau peuvent faire l objet de contr les par l interm diaire d accesseurs fonctions get NomAttribut et set NomAttribut e Toute variable pass e en param tre d une fonction peut tre contr l e gr ce la pr sence du type dans le prototype ex LdapUser dans le prototype B La varia ble passer doit tre obligatoirement une instance de classe compatible avec le type sp cifi sinon le script choue l ex cution ce m canisme est valable par tir de PHP 5 24 Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE RETENIR Pour en sa
72. un diteur exclusif limite les fonc tionnalit s celles d un seul outil Dans certains cas il peut tre utile qu un des participants du projet utilise un diteur diff rent qui effectue des op rations utiles que l diteur courant ne g re pas 14 Organisation du projet conventions et outils PREMI RE PARTIE diteurs pour applications lourdes Nous nous contenterons ici de descriptions tr s simples sur une s lection d diteurs couramment utilis s Chaque diteur poss de un site officiel consulter pour de plus amples informations Eclipse L diteur Eclipse accompagn du plug in PHP Eclipse constitue une des solutions les plus compl tes disposition des d veloppeurs de projets de grande taille Il con vient parfaitement pour des d veloppements professionnels n cessitant de bons outils de gestion de projets et de travail en quipe Son int gration CVS et Subversion est r ussie et les fonctionnalit s utiles au d ve loppement d applications orient es objet auto compl tion explorateur de classes etc s av rent tr s utiles Cet diteur poss de galement de multiples fonctionnalit s h rit es du plug in Java D ailleurs beaucoup de d veloppeurs Java l utilisent Dans un environnement multi plates formes Java PHP il permet une meilleure communication entre les d ve loppeurs Pour un d veloppeur Java qui souhaite migrer vers PHP cet diteur est ga lement un bon compromis
73. un obstacle la rigueur La communaut des utilisateurs PHP est de ce fait tr s h t rog ne et compos e de plusieurs cat gories de d veloppeurs e Les d butants ou anciens d butants qui ont commenc d velopper s rieusement avec PHP Ces utilisateurs ont tendance tre limit s par un manque de connaissances th o riques de la programmation informatique Certains rigoureux et travailleurs pro gressent En revanche une majorit se contente de l extr me permissivit de PHP pour d velopper de petites applications e Les d veloppeurs issus d autres technologies telles que C ou Java Ils ont d j des r flexes et une exp rience de la programmation qui leur permet tent d aller plus loin avec PHP EER Best Practices PHP AVIS D EXPERT Cyril Pierre de Geyer PHP une plate forme intuitive et facile assimiler Avec l arriv e de PHP 5 nous sommes entr s dans une nouvelle re pour PHP S il ne s agit pas d une r volution on peut du moins parler d une volution majeure On ne parle plus de PHP comme d un lan gage de script mais on prend de la hauteur et on parle de PHP comme d une plate forme compl te Sa force r side dans ses deux langages proc dural et objet qui tendent faciliter la prise en main de l outil et laissent le d veloppeur libre d adopter la m thode de travail qu il souhaite Ce n est plus la tech nologie qui d cide mais le d veloppeur num rer la liste des avantages
74. veloppement qui sort du contexte de ce qui est demand en pr vi sion de demandes venir ou par curiosit n a pas sa place dans le code source 2 l gance et simplicit ne sont pas facilit Un code l gant est minimal sans redondance Chaque id e est exprim e clairement et isol ment C est dans cet esprit que les d veloppements orient s objet prendront tout leur sens dans une d marche de d veloppement XP 3 Pratiquer le remaniement refactoring abord au chapitre 13 Cette op ration consiste revenir sur le code et effectuer des modifications utiles Le remanie ment permet entre autre les op rations suivantes limination du code dupliqu la s paration des id es scinder les m thodes rallonge se limiter 25 30 lignes maximum l limination du code mort l am lioration de l efficacit retrait des traitements inutiles r partition du code dans les fichiers 4 crire du code lisible Les pratiques XP privil gient les possibilit s de remanie ment d une application sur l laboration d une architecture fig e Le code doit tre lisible et les mots choisis doivent tre explicites Le code est lui m me une docu mentation Vient ensuite la documentation apport e par les commentaires et les tags phpdoc qui compl te le code si n cessaire et peut tre g n r e sous forme de documents aux formats HTML ou PDF M THODE Utiliser des m taphores Les pratiques XP re
75. vous tes souvent oblig de surcharger votre code de cette succession d appels afin de tracer le comportement de votre application alors qu un outil de d bogage peut faire cela imm diatement Vous perdez ainsi temps et lisibilit e Enfin certains param tres sont difficiles mesurer sans outil comme par exem ple les temps d ex cution et l utilisation des ressources m moire processeur Cela vous oblige faire des valuations approximatives ou alourdir votre appli cation avec des tests manuels En revanche certains aspects du d bogage manuel peuvent tre utiles Il est souvent pratique d utiliser un logger un enregistreur qui rend explicite les actions effectu es et les enregistrent dans une base de donn es ou dans un fichier Le ogger peut tre activ en production pour d tecter les erreurs bloquantes afin de les corriger par la suite En d veloppement certains d bogueurs permettent de faire du profiling enregistre ment d une succession d actions et proposent galement un m canisme d criture dans un fichier de log D finir une strat gie de d bogage globale D boguer une application ne s arr te pas aux erreurs d tect es au fur et mesure par le d veloppeur sur son poste de travail Les phases de tests recette et de production peuvent galement rapporter certaines erreurs Associer l environnement de recette un d bogueur peut s av rer efficace en terme de tra abilit des
76. 16 Best Practices PHP PHP est un interpr teur Il ne n cessite aucune op ration manuelle de compilation ou de construction pour ex cuter ce que lui demande l utilisateur Il lit et ex cute directement ce qu crit le programmeur PHP est n anmoins fiable Un script interpr t par un programme dot d un excel lent parseur analyseur syntaxique accompagn d un compilateur et d un moteur efficaces est plus rapide et plus stable qu un programme mal compil ou ex cut par dessus des couches logicielles lourdes PHP est portable Son utilisation sur Mac Microsoft Windows ou Unix est P garantie l exception de rares extensions sp cifiques une plate forme donn e Architecture minimale PHP CLI et GTK M me si nous le voyons souvent associ un serveur HTTP pour d livrer des pages web en utilisation ligne de commandes PHP se suffit lui m me Ex cuter du PHP en ligne de commande php r print_r posix_uname Array C sysname gt FreeBSD nodename gt guillaume release gt 5 4 STABLE version gt FreeBSD 5 4 STABLE 4 Mon Jun 13 19 28 13 CEST 2005 machine gt 1386 PHP est un interpr teur de script shell performant et plein de possibilit s Il dispose comme Perl d un ensemble vaste et vari de fonctionnalit s mettre disposition de l administrateur syst me Cet ouvrage par exemple a t export aux formats PDF et HTML partir de docu ments Op
77. 164 Caract ristiques de Posters Otis nantes te date 164 Pourquoi choisir PostgreSQL LS et end EN 164 Oee D a L 164 Caract ristiques d Oracle L a nananana 164 Po rguorehotsir RARE raising sn an ere nt E E A De 165 SQLite RS e E A A E EE E E E T E 165 Caract ristigues deS OLE naia rire RES EEA E 165 Pourguor CROIS OMR aasre Re TAa E EREE EEA 165 Comparatif des SGBD support s par PHP 166 Outils d abstraction de bases de donn es 167 EUR Best Practices PHP PDO EAN UE ERA A ER AR ER AR SN AA a 167 ODBC in Re sun deal E re en et nee 168 Cr ation du mod le de base de donn es 169 Mod le conceptuel de donn es MCD 2 442 us mutoutreens 169 Mod le physique de donn es MPD 170 criture des requ tes de cr ation 170 Outils de design et de g n ration esp ur anne area a eo an 172 Choix d un format de donn es normalis 173 AN is RAS A et a A na UN a Rue 173 MANIERE ses applications y 5 hens en Reed Res ar nee se 174 Protocoles et applications bas s sur XML 175 EDAP 3 sans n and he nn aire a to ii M NA 175 Organisation des donn es avec LDAP na na nunnana 175 Seh ema et classes EDAP a nan nantes asie TEN OT E i 176 Fichiers texte structur s inietc 176 Fo
78. 1O Entit O 4 Quelle diff rence y a t il entre un objet et une classe Un objet est ce que l on appelle une instance de classe La classe est en quelque sorte un moule cr er des objets Par exemple la classe Uti 1i sateur peut servir cr er des objets Gui 1laume Pon on Zeev Suraski etc La classe m tier Une classe m tier ou entit m tier est sp cifique un domaine d activit Par exemple si votre m tier est l dition vos classes m tier seront des livres des auteurs et tout ce qui peut se rapporter votre activit Le st r otype Les caract ristiques de vos objets peuvent galement tre d duite du st r otype des classes correspondantes Un st r otype prend par exemple les valeurs suivantes e page pour indiquer que la classe est sp cifique une page e classe smarty pour indiquer que la classe provient de la biblioth que smarty e action pour indiquer que la classe est une action du motif de conception MVC e etc Le st r otype sera notre niveau une notation pratique Il distingue des classes ayant des caract ristiques identiques 190 Mod lisation en UML pour PHP DEUXI ME PARTIE R F RENCE En savoir davantage sur les objets Le chapitre 11 consacr aux m ta structures d crira de mani re d taill e ce qu est un objet et comment s en servir Le chapitre 10 proposera une liste de motifs de conception design patterns tr s utiles pour acc
79. 2x mEA0ER Do NT nbpages mn 0 XmBmEr eyrolles F z e Eu T Check AN Uncheck Al We hsebcted 2 X M BOOT D Print view SBPropose table structure FiAddfi field s amp At End of Table C At Beginning of Table C Ater boxa 2j DG51 indexes T Space usage Row Statistic Keyname Type Cardinality Action Field Type Usage Statements Value PRIMARY PRIMARY 0 2 X bokid Osta O Bytes Format dynamic Croate an index on fi columns Go Index 1024 Bytes Collation utf_umcode_ci 2 Total 11024 Bytes Rows 0 Creation Jui 12 2009 0t 1137 AM Last update Jui 12 2008 at 1137 AM Run SQL query queries on database eyrolles Fields SELECT FROM book WHERE 1 book id a category_id book titie eA l e PhpPgAdmin Ce script permet d diter des bases de donn es PostgreSQL Il est tr s utilis par les d veloppeurs qui travaillent avec ce SGBD Il est compatible avec de nombreuses versions et permet de manipuler des bases sur le m me principe que PhpMyAdmin En revanche il est moins complet et volue peu par rapport ce dernier PostgreSQL poss de en plus de cela une interface d administration dite client lourd tr s compl te P amp Admin PgAdmin http www pgadmin org PhpPgAdmin http phppgadmin sourceforge net SQLiteManager Cet diteur permet de se connecter une ou plusieurs bases SQLite et administrer la structure et les donn es Il est simple et pratique SQLiteManager http salitemanager sourcefor
80. 32 suffix substr method 4 cattrs count attrs if property_exists this suffix if prefix set amp amp cattrs 1 return this gt set suffix attrs 0 if prefix get amp amp cattrs 0 return this gt get suffix trigger_error La m thode method n existe pas CHAPITRE 9 Mod lisation en UML pour PHP DEUXI ME PARTIE Jouer avec la g n ricit Choisir entre g n rique ou sp cifique est une question d quilibre Dans un cas comme dans l autre il y a de gros avantages et de gros inconv nients Un choix trop g n rique par exemple un tre vivant couvre une tr s large popu lation mais ne permet pas de manipuler des d tails sp cifiques aux oiseaux par exemple qui ne concernent pas toute la population des tres vivants Un choix trop sp cifique par exemple une panth re des neiges couvre une popu lation trop restreinte bien qu il soit possible de tenir compte de l ensemble des d tails li s cette sp cificit Si des volutions doivent tre effectu es on r fl chira ce choix Gr ce aux objets vous pouvez faire h riter le sp cifique du g n rique Ainsi il est possible de d velopper des logiques contr les bas es sur du g n rique du sp ci fique ou un tage interm diaire Contr le Contr le K N Contr le Contr le X Produit i Produit Produit Prorok osm tique 4 Ea
81. 80 personnes d veloppe les modules PHP Ces modu les sont d velopp s en langages C C On en d nombre environ 400 l heure actuelle L quipe de qualit environ 22 personnes est garante de la qualit des d velop pements effectu s sur le noyau de PHP Les quipes Smarty et PHP GTK environ 40 personnes maintiennent ces deux projets importants En tout plus de 1 000 personnes sont enregistr es dans le d p t de donn es CVS Environ 470 commiters r partis dans plusieurs groupes participent r ellement au d veloppement du projet Figure 1 1 R partition des contributeurs dans les diff rentes quipes R partition des contributeurs Documentation 470 personnes PECL Extensions PEAR Biblioth ques D veloppement PHP est il adapt vos besoins EJ CHAPITRE 1 Figure 1 2 T R partition de l activit R partition de des diff rentes quipes l activit Documentation 209 000 commits sur 3 ans PECL Extensions 3 PEAR Biblioth ques D veloppement RESSOURCES Liens vers les sites officiels des diff rentes quipes D veloppement http www php net Documentation http www php net docs php PEAR gt http pear php net PECL http pecl php net Qualit http qa php net Smarty http smarty php net PHP GTK http gtk php net Politique d volution La plupart des grands projets Open Source poss dent leur esprit
82. B soit C soit D B c D e Un moule utilis pour cr er des 4 L entit A peut faire appel B C et __ objets selon une norme interface D autant de fois qu elle veut ue 477 Un mod le d objet ou un moule L entit A peut faire appel plusieurs t __ classe abstraite ou interface B fois l entit B n q d Agr gation de deux objets Figure 10 1 L gende des sch mas sur les motifs de conception Principe de la fabrique Une interface AbstractProduct sert de mod le des objets ConcreteProduct Lins tanciation de ces objets est confi e une m thode dite m thode de fabrique de la classe ConcreteCreator issue d un mod le AbstractCreator ConcreteCreator se charge d instancier un objet ConcreteProduct qu il aura pris soin de choisir Figure 10 2 Principe de la m thode de fabrique Principe 20 DataManager Page b AbstractCreator AbstractProduct CRUE HTMLPage PageManager Product ConcreteCreator 1 XMLPage PageManager getPage html Product 4 Objet Page au TXTPage format voulu Product Mod lisation en UML pour PHP DEUXI ME PARTIE Mise en pratique Une classe abstraite Page sert de mod le la cr ation de pages web Ces pages peu vent tre de types diff rents HTML XML ou texte Le cr ateur PageManager se charge d instancier et de renvoyer les pages demand es Dans l exemple suivant la m thode d
83. Blueshoes Biscuit Cake Les fonctionnalit s du framework sont elles adapt es vos besoins Tableau 7 1 Quelques frameworks pour vos d veloppements PHP Description Un framework bas sur le projet Maverick crit en Java Il fournit une impl mentation du motif de conception MVC Ce projet peut se coupler aux applications JBoss par l interm diaire du service JAAS Un framework orient objet sp cialis dans les d velop pements de logiques m tier L objectif de cet outil est de permettre le d veloppement d une application en un minimum de lignes de code et malgr cela un maximum de possibilit s de personnalisation AWF Adaptive Website Framework est crit pour PHP 5 Sa structure orient e objet peut tre facilement assimil e et tendue Bas sur un CMS ce framework met disposition un grand nombre d outils pratiques gestion des sessions des utilisateurs et des groupes d bogage persistance d objets etc Un framework bas sur le motif MVC et les technologies Ruby Un framework qui impose une architecture et des r gles pour le d veloppement et la maintenance facile d appli cations web portables Il propose des outils d acc s aux donn es une compatibilit PHP 4 amp PHP 5 un moteur de templates et d autres fonctionnalit s utiles URL http amb sourceforge net http www achievo org atk http www awtf cms org http www blueshoes org http cakephp org La r putati
84. Ces deux objets bien que compatibles car h ritiers de la classe abstraite PageManager ne se comporte ront pas de la m me mani re pour construire les pages demand es par l utilisateur Les motifs de conception Design Patterns CHAPITRE 10 La strat gie Strategy Ce motif d finit des familles d algorithmes interchangeables encapsuler dans des objets existants Ce m canisme doit tre compl tement transparent pour l objet Context qui ne fait qu utiliser les m thodes d finies par l interface Strategy Figure 10 18 Le motif strat gie Strategy ConcreteStragegy1 St E m Principe Page liste produits Service Web SOAP Context ConcreteStrategy1 HTML I ConcreteStrategy2 LE Strat gie d affichage PDF Strategy ConcreteStrategy3 Le motif strat gie est int ressant pour PHP car il se base uniquement sur les parties diff rentes d algorithmes similaires Ainsi nous ne nous retrouvons pas avec des par ties de code dupliqu es inutilement Concr tement ce motif peut servir g rer plusieurs langues plusieurs rev tements pour votre site ou toute autre fonctionnalit similaire Le patron de m thode Template of Method Principe du patron de m thode Plus un algorithme est complexe et volumineux plus il doit tre scind Le motif patron de m thode propose de fournir une classe dont la succession des m thodes d finit les grandes lignes le squelette d un
85. Construit le tableau de livres i 0 while i getNbBooks i books i new Book i Apr s Construit le tableau de livres nbBooks int getNbBooks for i 0 i lt nbBooks i books i new Book i Utiliser des templates Qu est ce qu un moteur de templates La technique du template est tr s la mode Elle est g n ralement utilis e pour s parer la partie logique de la partie pr sentation d une application Le prin cipe du template est simple e La partie pr sentation est constitu e de plusieurs templates fichiers mod les et d un moteur Les templates sont de simples fichiers texte qui servent de gabarits la g n ration des donn es e La partie logique constitue l aspect dynamique de l application d gag e des m ca nismes li s au design Utilit d un moteur de templates Le m lange de la logique m tier et de la pr sentation pose souvent des probl mes de lecture et de maintenance du code Sans templates la modification d l ments gra phiques dispers s dans une logique m tier peut devenir laborieuse Simplifier et p renniser un d veloppement PHP 33 CHAPITRE 13 En revanche l dition d un template pour la mise jour de la pr sentation d une application est ais e Il est m me possible d diter le mod le avec une application wysiwyg conviviale Figure 13 4 z z Utilit d un moteur Logi
86. CreateProductA CreateProductB lossndesssssmessonresscmsslusesmssasssssessessessh 7 Montagne TS Activit AbstractProductB Petit train d artouste ProductB2 Sport D couverte ConcreteFactory1 Surf Biarritz ProductA1 Les fonds sous marin ProductA2 Le mont blanc ProductB1 ConcreteFactory2 227 Mod lisation en UML pour PHP DEUXI ME PARTIE Remarque sur l utilisation de la fabrique abstraite avec PHP Ce motif peut tre utile PHP mais apporte un degr de complexit parfois d rou tant Il fait intervenir un grand nombre de classes ce qui peut ralentir l g rement l ex cution de l application En revanche PHP poss de la capacit de cr er des classes la vol e Dans ce cas de figure les familles et les classes de produits peuvent tre g n r es Les interfaces res tent fig es elles fournissent aux objets qui exploitent le motif Controler le sque lette n cessaire l exploitation des produits Le monteur Builder Principe du monteur Lorsque vous devez instancier plusieurs objets complexes et diff rents ayant des caract ristiques communes vous pouvez d l guer la construction une classe Builder Ce motif ressemble un peu la fabrique Il s pare la construction d un objet com plexe de sa repr sentation de sorte que le m me proc d de construction puisse cr er diff rentes repr sentations Mise en pratique
87. Enfin Eclipse repose sur une philosophie de plug ins crits en Java Il est parfaite ment possible de cr er ses propres plug ins adapt s ses besoins v rificateur syn taxique modification des plug ins PHP etc gt http www phpeclipse de Zend Studio Un diteur similaire Eclipse galement crit en Java par la soci t Zend Technolo gies Il int gre par d faut un g n rateur de documentation PHPDocumentor et un d bogueur Zend Studio peut galement tre li plusieurs outils Zend Technologies tels que Zend Encoder ou Zend Platform gt http www zend com store products zend studio Choisir un diteur CHAPITRE 5 125 Maguma Open Studio Maguma Studio Un bon diteur qui existe maintenant en deux versions une open source et une commerciale Il g re tout ce que l on peut demander un diteur professionnel La version gratuite comporte malheureusement quelques probl mes de stabilit gt http www maguma com diteurs polyvalents Komodo Professional Komodo est un diteur stable qui poss de une interface agr able et intuitive ainsi que toutes les qualit s que l on peut exiger d un outil professionnel Il int gre les fonctionnalit s de travail en quipe de gestion de projet et de navigation Il est enti rement compatible PHP 5 et poss de une fonction de compl tion tr s efficace Le point fort de Komodo est la simplicit d installation
88. Le social engineering est la b te noire de la s curit des grosses entreprises et des ban amp 8 ques Cette discipline consiste obtenir des informations confidentielles en se faisant passer pour quelqu un d autre De nombreux professionnels du social engineering comme Kevin Mitnick en son temps ont acquis une telle ma trise de cet art qu ils r ussissent en tr s peu de temps s impr gner compl tement de la culture d une entreprise et se faire passer pour n importe qui Jouer le chef de service pour demander des informations confidentielles un sta giaire ou se faire passer pour un guichetier qui a un probl me d informatique et qui veut le num ro de carte bancaire de M Untel est pour eux un jeu d enfant Actions de pr vention Pour pr venir ce genre d attaque la configuration technique ne suffit pas L instaura tion d une discipline pour l ensemble du personnel ayant acc s aux ressources sensi bles est n cessaire Dans le cadre de la s curit de vos applications PHP faites en sorte que les informa tions confidentielles telles que les mots de passe soient connus par un cercle tr s res D finition des exigences pour l exploitation QUATRI ME PARTIE treint de personnes Mettez galement en place des r gles ne Jamais communiquer un mot de passe par t l phone m me quelqu un de confiance etc Sympt mes et attitudes adopter en cas de probl me G n ralement
89. Nous pouvons voir sur la figure 10 4 que la classe Monteur de V hicule est charg e de renvoyer un objet repr sentant une voiture un bus ou un scooter C est le magasin Controler qui est charg de construire des objets travers le monteur Builder BuildItem Figure 10 4 UML Principe Le motif 77 Monteur de V hicule monteur l Builder Builder eeen Cod MonterCylindr e MonterRoues MonterPortes etc TAN Voiture ConcreteBuilder MonterCylindr e MonterRoues MonterPortes etc ConcreteBuilder Builditem Bus ConcreteBuilder MonterCylindr e MonterRoues MonterPortes etc Scooter ConcreteBuilder Magasin Controler MonterCylindr e MonterRoues MonterPortes etc V hicule Product Les motifs de conception Design Patterns CHAPITRE 10 Le prototype Prototype Le motif prototype peut conomiser des ressources lorsque l on a plusieurs classes identiques instancier gr ce un proc d de clonage De cette fa on il est possible de cr er des objets sans passer par l tape de construction Principe du prototype Un mod le prototype impl mente une m thode clone qui renvoie une copie de l objet courant Tout objet issu d une classe qui h rite de prototype peut ainsi tre clon Un tel objet est cr une fois et cette premi re instance est ensuite dupliqu e chaque fois que l on a besoin d un objet du m me
90. PHP 445 q princep q PP Quelle ont t votre meilleure et votre plus mauvaise exp rience avec PHP 445 XXVI Best Practices PHP Perrick Penet responsable de la soci t No Parking 446 ouvez vous nous parler de la m thode eXtreme Programmin P parler de l hode eX Prog ing Gue VOUS PTALIJUCZ ES SAA e aE E AE E A ee EER 447 ue pensez vous de l utilisation d un framework avec Ps an de l utilisation d k XP 448 Que conseillez vous aux d veloppeurs pour apprendre le PHP 448 Romain Bourdon g rant de la soci t Kaptive 449 En quoi consiste votre projet Landes es SR en BE ns 449 Quelle valeur ajout e apportent les choix technologiques de votre solution 449 uelles ont t les trois difficult s majeures rencontr es dans ce projet 1J pry Comment avez vous r agi Less nue de be Den a d 449 Avez vous adopt une m thode de gestion de projet 450 uels outils avez vous utilis pour ce projet 450 Q pro Que retenez vous de cette exp rience LS red ep ter bar Pure 450 Matthieu Mary ing nieur de d veloppement chez Travelsoft 451 Pouvez vous vous pr senter MSN SE ne eee ne 451 En quoi consistait votre dernier projet professionnel d velopp en PHP 451 uelles difficult s avez vous rencontr es lors de ce d veloppement 451 PP u est ce que ce d veloppement vous a appor
91. PhpMyAdmin proposent de la g n ration de code PHP G n ration d interfaces utilisateur C est souvent le r le des moteurs de templates associ s la partie vue du motif MVC Les g n rateurs d interfaces sont responsables de l association du design et des donn es utilisateur Ils peuvent produire aussi bien des interfaces statiques que dynamiques EJ Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Couches de services web Votre application met disposition diverses fonctionnalit s que vous voulez inter facer sans limite Avec PHP nous avons tendance consid rer une interface comme une page HTML et ses formulaires Les services web sont aussi des interfaces un peu particuli res disons qu elles peu vent jouer un r le de proxy entre une application et plusieurs interfaces distantes G n rer une couche service web consiste cr er un service automatiquement partir des fonctionnalit s existantes G n rer la logique m tier Plut t que d int grer directement la logique m tier dans des classes et des structures de bases de donn es fig es pourquoi ne pas mettre en place une configuration de logique m tier et un g n rateur qui s occuperait de cr er les classes et la base de don n es qui vont bien Dans le cas d applications complexes mettant en uvre une logique m tier tr s compl te cette solution peut s av rer rentable R F RENCES Pour en savoir
92. Produit Produit gt Utilise Produit i 4 H rite de gi O o Produit de Produit de Produit de Produits Voyage Voyage _ Voyage cosm tiques yag Cr yag Te yag DX 2 SAT is R E Circuit Circuit e Visite Circuit Visite amp Touristique Touristique S jour Guid e Touristique S jour Guid e Hydratante n Temps Z tape 1 tape 2 tape 3 Figure 9 4 Jouer entre g n rique et sp cifique Sur la figure 9 4 nous distinguons trois tapes successives d laboration de classes que nous pouvons d tailler ci apr s Optimiser le mod le pour PHP ET CHAPITRE 9 Premi re tape pr voir ce stade figure 9 4 tape 1 nous savons que nous devons mettre en place une application de gestion de produits bas s sur des circuits touristiques Nous savons galement que cela peut voluer en s largissant sur d autres types de produits Nous allons donc pr voir que notre entit circuit touristique est un produit de voyage et qu un produit de voyage est un produit Notre objet contr le produit peut tre dans un premier temps li l entit la plus g n rique afin de couvrir un maximum d entit s filles Deuxi me tape une premi re volution Notre gamme de produits de voyage s tend aux s jours et aux visites guid es Gr ce notre pr voyance nos objets contr le produit et associ s n ont aucune modification subir et g rent par h ritage les s jours et les visites guid es ajout s
93. Quelques plug ins peuvent tre galement int ressants dans le cadre de d veloppements PHP assistant de cr ation de classes aide contextuelle visualiseur de logs int gration CVS etc gt http www jedit org Kate Un diteur simple sous Unix exploitant les m mes fonctionnalit s d dition PHP que Quanta Plus gt http kate kde org gPHPEdit Un petit diteur prometteur pour Unix int gr au projet Gnome un peu instable pour l instant Il g re la coloration syntaxique le masquage de code pour PHP HTML et XML l dition HTML PHP un analyseur syntaxique et un explorateur de classes et de fonctions gt http www gphpedit org Choisir un diteur CHAPITRE 5 EEN Un test pour choisir son diteur Voici un petit test destin vous aider dans votre d marche de recherche de l diteur id al Il est compos de 30 questions dont 8 concernent l utilisation que vous voulez en faire et les 22 autres quelques fonctionnalit s que vous souhaiteriez avoir Le passage de ce test n est pas suffisant pour effectuer votre choix d finitif Il existe d autres utilisations et d autres fonctionnalit s qui ne sont pas mentionn es telles que l utilisation pour l administration syst me la gestion des infobulles ou de la navi gation hypertexte dans le code Entourez la lettre qui convient votre r ponse A B ou C pour chaque question puis faites votre analyse en vous aidant de la figure 5 5 L
94. SQL 92 facile adminis trer Open Source multi plates formes support XML outils d administration Similaire MySQL sp cialis SAP SGBD populaire gratuit et performant Pos s de de nombreux outils d velopp s en PHP dont PhpMyAdmin SGBDR performant et tr s complet SGBDR performant transactionnel sp cialis pour les transactions web SGBDR Open Source tr s complet et perfor mant Outils d administration conviviaux Supporte de nombreuses connexions grande stabilit G re des bases embarqu es permissif et per formant Concurrent Microsoft d Oracle DB2 Informix De tr s nombreuses fonctionnalit s outils d administration conviviaux Inconv nients Utilise une syntaxe SQL sp cifique Prix lev des licences Quelques difficult s sur les grosses volum tries Popularit affaiblie par la concurrence requ tes concurrentes impossibles pour une m me connexion Variante commerciale de MySQL apport dis cutable Pas aussi complet que PostgreSQL Oracle ou SQL Server mais progresse rapidement Produit commercial peut devenir complexe administrer Indisponible sous Windows R plications support XML Base sp cifique d velopp e pour des quipe ments BS2000 0SD Tr s simple verrouillage de la base en cri ture Fonctionne uniquement sous Windows Choisir les ressources et les supports de donn es 167 CHAPITRE 7 Outils d abstracti
95. Validation des op rations cvs commit m Message de maintenance Utiliser les cl s de substitution Une cl de substitution est un mot cl que le gestionnaire de versions va interpr ter la validation de votre fichier Ce mot cl sera remplac par des informations Par exemple un mot cl Id pr sent dans un fichier PHP sera substitu par des infor mations sur la version courante et son auteur comme le montre l exemple suivant Pla ons une cl de substitution Id la cr ation d un fichier lt php Id Id sera automatiquement substitu par des informations la validation lt php J Id index php v 1 1 2005 05 17 22 50 05 guillaume Exp amp Organisation du projet conventions et outils PREMI RE PARTIE cl Id Header Author Date Name Log Revision Source State Locker Tableau 3 1 Liste des cl s de substitution CVS Informations substitu es Nom du fichier version et date de derni re validation identifiant de l auteur M mes informations que Id avec le chemin complet vers le nom du m tafichier correspondant dans le d p t Nom de l auteur de la derni re validation Date de la derni re validation Nom du tag utilis pour extraire le fichier Ajoute des informations chaque validation Attention cette cl elle augmente la taille du fichier chaque validation Le num ro de version du fichier Chemin complet vers
96. Virtual Consoles Connexion au serveur EMACS gt Votre diteur est lanc gt fermer la fen tre Voil Vous avez maintenant un m canisme rapide et pratique pour diter instanta n ment vos fichiers PHP en cas d erreurs Notons qu il vaut mieux que vous choisis siez un diteur l ger pour cette solution qui n cessite une relance chaque erreur En revanche libre vous de l adapter et de l am liorer en commen ant par compl ter les sources avec une gestion d erreurs ad quate Pour aller plus loin vous pouvez mettre en place ce syst me non seulement sur les erreurs PHP mais galement sur les piles d erreurs affich es par un d bogueur comme Xdebug voir figure 12 7 Dans le cas d Xdebug les fichiers modifier sont xdebug c et xdebug_superglobals c Pour effectuer cette op ration sous Windows vous pouvez utiliser un diteur comme Crimson Editor qui permet louverture d un fichier la bonne ligne avec l invite de commande Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE m http locabwost epn pr Mraternity home frames menu phe Konqueror x Figure 12 7 Location Edit Vew Go Bookmarks Tools Settings Window Help 1 Ajout de liens aux 000008 4 ASRA S tiz P E Location nttp focalhost gpn prifraternty home frames menu pho i 23 ka l ments de us Et froobsd PH Et wM J The X Window System and Virtual Consoles j http www interjinn com JM Saicine
97. aa 79 Cr ation un d p t de donn es nununununnnar urunan ar nre 80 Configuration du d p t pour PETP 2 8e de sut eus 80 Le fichier COOPER eee a de de E 81 LEONE SE a nt ae a dE RUES etes 81 Cr ation de modules et import de donn es sise ttes 82 Op rations de bases 5 eee ee ne nil mine Et ti 83 Utiliser les cl s d substtation ss 8 A nes ni a het 83 Chents graphiques 255 s aan NE ire tenen i Ea TE ERS s 84 CHAPITRE 4 Mettre en place l environnement d ex cution pour le d veloppement es 85 Qu est ce qu un environnement d ex cution 86 D finition d un environnement d ex cution pour PHP 86 L environnement minimal 86 Un environnement standard individuel 87 L environnement standard en quipe 2 5 uses dress eu een 88 Un environnement agile bombe enr some eus es ones 89 Param tres utiles d un environnement d ex cution 90 la COMP UALOR EN NE STE ANS A2 Rte 90 Apres ONG SE ER D SEPT PROTEIN NRA 92 Le trio d veloppement recette production 97 Table des mati res ET Apports et contraintes d un environnement d ex cution 98 Des outils et des param tres communs 98 Une simplification des d veloppements en quipe 99 Un gain de temps en cas de crash 435 aan diner een 99 Un complexit relative ssh d
98. aaa Configuration du syst me Programmes et ET Programmes et configuration du serveur ee configuration du serveur LiSzssszszsezs z 2 MISES sses X v Proxy HTTP Assurer la disponibilit s curit et maintenance as CHAPITRE 16 La figure 16 3 illustre une strat gie de sauvegarde d un serveur de production sur un serveur miroir qui est capable de prendre la main tout moment en actionnant un proxy HTTP frontal Qu est ce que cela veut dire Le proxy HTTP est une machine dot e d un serveur HTTP comme Apache Son r le est de relayer les requ tes sur l un ou l autre des serveurs en fonction de sa confi guration Ce proxy HTTP peut tre configur pour basculer d un serveur l autre de mani re ce que les utilisateurs ne voient rien ou presque Si le serveur de production tombe alors la r plication du serveur de production vers le serveur de sauvegarde doit s arr ter et le proxy HTTP doit basculer sur le serveur de sauvegarde qui devient alors un serveur de production temporaire Une fois que le serveur de production est r par votre routine de restauration doit permettre de r pliquer les donn es du serveur de sauvegarde vers le serveur de pro duction basculer le proxy HTTP et remettre en place la routine de r plication auto matique Fr quence de sauvegarde Si vous mettez en place un syst me comme celui qui est d crit pr c demment vous serez confro
99. abstraite d instrospection Instrospect charg e de transmettre le rapport d instros pection via une m thode sp ciale En revanche s il ne s agit que de r cup rer la structure des classes et de leurs consti tuants m thodes attributs l API de r flexion de PHP 5 suffit Cette op ration peut galement tre mise en place de mani re explicite avec la m thode magique __toStringO comme nous l avons vu dans la section pr c dente avec XML Des documents XML aux tableaux Utilit partir de donn es stock es ou transmises via XML il est parfois utile d effectuer des transformations en structures plus faciles exploiter travers des tableaux C est cela que r pondent des outils comme WDDX SOAP travers les services web ou SAX pour des applications sp cifiques Figure 11 19 Du document XML au tableau lt Transformation Tableau Donn es manipulables xml Exploiter les points forts de PHP les m ta structures ER CHAPITRE 11 RETENIR Le format ini Il existe un format de stockage de param tres non XML qui est tr s utile pour g rer des fichiers de confi guration Le format ini utilis notamment dans le fameux fichier php ini est pratique exploiter et tr s facile passer en tableau Pour cela une fonction pratique existe parse_ini_filec gt http www php net manual fr function parse ini file php Outils existants Les outils suiv
100. accompagn de nor mes pr cises adopt es par les grands acteurs du march J2EE NET e REST Representational State Transfer est un type d architecture mergent et tr s l ger parfaitement adapt e PHP Il permet de mettre en uvre des applica tions d interop rabilit simples et rapides e XML RPC est la source d inspiration de SOAP II est aujourd hui moins utilis depuis l apparition de ce dernier mais poss de encore une communaut active et fid le Figure 14 8 Application Traduction Echanges de flux Traduction Application Interactions entre diverses applications h t rog nes PHP SOAP SE SOAP PHP via les services web a gt Java XML RPC coomani XML RPC Java C REST lt An REST C RE RE document mere me Requ te ER Traduct FA a PHP SOAP oo Traduct E es D soapx Y gt Traitmt Re x N _ Traduct Traduct e mj xSOAP SOAP PHP A R cept LE TEE PHP Exemple d interaction entre PHP et un autre langage x Assurer des d veloppements PHP performants et polyvalents 355 CHAPITRE 14 R F RENCE Se documenter sur les services web Pour en savoir davantage sur les services web et leur impl mentation il existe un ouvrage tr s complet sur ce sujet Services web avec J2EE et NET de Libero Maesano Christian Bernard et Xavier Le Galles aux ditions Eyrolles
101. adapt s aux caract ristiques de PHP 11 Exploiter les points forts de PHP les m ta structures Tout programme informatique quel qu il soit manipule des donn es Les d ve loppeurs de PHP en ont conscience et savent rendre toujours plus simples et prati ques les outils de manipulation de contenu Nous verrons travers ce chapitre que toute la souplesse de la plate forme se retrouve dans les trois m ta structures principales utilis es dans les d veloppements informa tiques modernes Les tableaux permettent de manipuler des collections des listes des matrices ou des associations de donn es de mani re extr mement simple PHP poss de une multi tude de fonctionnalit s li es aux tableaux parfois insoup onn es Les documents XML sont l avenir de l interop rabilit De tr s nombreux changes se font maintenant travers des protocoles bas s sur XML SOAP XML RPC WDDX etc Les objets permettent de structurer organiser hi rarchiser les d veloppements Ils sont aussi la base de la r utilisabilit et acteurs des d veloppements ambitieux Ce chapitre aborde les m thodes et les connaissances n cessaires la manipulation agile et efficace de ces trois m ta structures Il met galement en avant les possibilit s de transfert d une m ta structure l autre 252 Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Les trois m ta structures de base Elles permettent de manipu
102. applications m tier Au sommaire PHP est il adapt vos besoins Productivit Architecture Fiabilit Portabilit Performances et mont e en charge Zend Engine Il Conventions et outils M thodes agiles MVC B tir sa propre m thode R les dans l quipe Erreurs courantes Le gestionnaire de versions R gles de bonne conduite Cr ation d une branche Subversion SVN Concurrent Versions System CVS L environnement d ex cu tion Param trages Le trio d veloppement recette produc tion Simplifier les d veloppements en quipe Environne ment sur mesure Suivi planifi de la qualit Contr les automatis s tests Sauvegarde et archivage T ches de main tenance Choisir un diteur Eclipse Zend Studio Dreamwea ver PHPEdit Quanta etc Choisir les outils d administration Gestion des donn es LDAP Flux etc Strat gie de d bo gage Monitoring Qualit et performances Choisir ressources et supports de donn es Les extensions C Les frameworks PEAR Fiabilit des ressources Licences Choix d un SGBD Abstraction de BD Mod les conceptuel de donn es MCD et physique MPD Mod lisation UML pour PHP Analyse fonc tionnelle Expression des besoins Exigences Contraintes Identification des objets m tier Principaux diagrammes Du mod le l impl mentation MDA Optimiser le mod le pour PHP Mod lisation agile La POO avec PHP 5 Exploiter les fonctions natives Interop rabilit
103. avoir le modifier chaque migration ou changement de serveur CONSEIL Privil giez l ind pendance de votre application Vous aurez ainsi la main sur la configuration tout moment vous gagnerez du temps en vitant de mul tiples configurations alternatives et favoriserez la portabilit et la r utilisabilit de vos d veloppements Les modules et options du serveur Gr ce certains modules et options vous pouvez effectuer des op rations int res santes tel que des mises en cache des r critures d URL des alias et de nombreuses autres configurations Le probl me ces modules sont souvent tr s pratiques et fiables mais leur utilisation intensive peut rendre votre application PHP inutilisable sans eux D finition des exigences pour l exploitation QUATRI ME PARTIE Les solutions alternatives faites en sorte que ces configurations soient facultatives Elles sont l pour optimiser l environnement applicatif et surtout pas pour se substi tuer vos d veloppements ou r parer les pots cass s L exemple typique concerne la r criture d URL module mod_rewrite du serveur Apache si vous n acc dez pas vos images parce qu il y a un probl me de configu ration dans votre code arrangez vous pour modifier le code N utilisez la r criture que si vous navez pas d autre choix Dans le cas contraire l accumulation des r cri tures aurait une incidence sur les performances la stabilit et la comp
104. balise Tableau 11 4 Avantages et limites de SAX Avantages Limites Permissivit SAX parse n importe quel document Parcours s quentiel ne permet pas l criture Son XML quelle que soit sa complexit rapidit co utilisation demande de la rigueur nomie des ressources m moire utilis e et calculs effectu s possibilit de parser des documents de grande taille 260 Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE DOM DOM est un outil stable et tr s efficace pour manipuler des documents XML que ce soit en lecture ou en criture Ici la navigation se fait de n ud en n ud Les objets DOM poss dent de nombreuses m thodes utiles la lecture l criture et la suppres sion de contenu d attributs ou de n uds Figure 11 6 m POMDocument DOM un outil de manipulation book me Te x _ is complet pour XML POMNode dPOMNode 4 Domatt 4 Domattr intro chapter title PHP Be author G P DOMText g POMNode POMNode DOMNode 4 DOMaAttr amp POMAtr Texte d intro p p p id 1 title PHP Est DOMText DOMText DOMText Contenu par Contenu par Contenu par Pour mieux assimiler le fonctionnement de DOM jetez un coup d il sur la figure 11 7 Y apparaissent les classes DOM fournies par PHP avec leurs relations Selon le principe de l h ritage il est possible d utiliser les m thodes de la classe m re dans la classe fille Figure 11 7 Hi
105. boucles performantes Rechercher et supprimer du code mort un compteur qui ne sert plus etc Simplifier et p renniser un d veloppement PHP ER CHAPITRE 13 M THODE Connaissance des motifs de conception pour le remaniement Le remaniement de niveau 3 structure d un code orient objet peut tre am lior avec une bonne con naissance des motifs de conception design patterns et de leurs applications Pour en savoir plus sur les motifs de conception consultez le chapitre 10 Un ouvrage en anglais est galement consacr au remaniement par les motifs Refactoring to patterns par Joshua Kerievsky aux ditions Addison Wesley Exemples Extraction d une condition Avant R initialise l objet courant public function createBook Teste si l objet courant peut tre r initialis if lisset this gt book amp amp this gt bookType self DEFAULT_TYPE this gt loadAction self RELOAD Gisa ed Apr s Teste si l objet courant peut tre r initialis private function _canInitCurrentBook return lisset this gt book amp amp this gt bookType self DEFAULT TYPE this gt loadAction self RELOAD R initialise l objet courant public function createBook if this gt _canlnitCurrentBook Ga CR EJ Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Optimisation des performances Avant
106. ce cette caract ristique d OpenOffice Figure 7 10 G n ration du pr sent ouvrage en HTML De nombreuses autres applications manipulent leurs donn es avec XML Vous pouvez int grer ce crit re dans vos choix Choisir les ressources et les supports de donn es EE CHAPITRE 7 Quelques applications r alisables avec XML e le stockage de donn es structur es de taille limit e le transfert d information via HTTP FTP etc e la mise en place de fichiers de configuration ou descripteurs e l criture de documents qui peuvent ensuite tre g n r s dans d autres formats PDE HTML etc Ce qu on ne fait pas avec XML e XML n est pas utilisable en tant que base de donn es Le tri et la recherche d information dans un document XML contenant de nombreuses donn es est lent et co teux Protocoles et applications bas s sur XML Voici quelques applications et protocoles g r s par PHP qui utilisent XML Ces applications font l objet d extensions C li es PHP et sont fiables et efficaces e SOAP est un protocole permettant de mettre en place des services web e XML RPC est galement un protocole moins utilis et plus simple que SOAP pour la mise en place de services web e WDDX est un outil de s rialisation qui utilise XML pour son contenu s rialis Cet outil fonctionne tr s bien avec des tableaux moins bien avec des objets e XSLT est un outil de transformation d un documen
107. ce mest pas le sien S approprier un framework ext rieur prend beaucoup de temps Et si certaines fonc tionnalit s peuvent tre reprises souvent il apporte aujourd hui une couche remplie d impl mentations inutiles Et qui sait ce qu il apportera demain Une des bonnes pratiques d XP consiste ne pas avoir peur de se s parer du code mort et des parties inutiles Je pense qu un framework n apporte pas forc ment plus de simplicit une application Que conseillez vous aux d veloppeurs pour apprendre le PHP Consultez les blogs J aime les blogs car contrairement aux forums ils mettent en vidence la progression de la pens e et les investigations effectu es par les uns et les autres Pr senter un sujet sur un forum ou dans un handbook ne dit pas pourquoi ces con cepts ont t pens s ainsi et quels ont t les constats et les d bats qui ont d termin le choix de ces solutions Je vous conseille donc en terme de bonnes pratiques les blogs suivants e 12 tapes vers un meilleur code http french joelonsoftware com Articles TheJoelTest html e Le Wiki d eXtreme Programming France http xp france net cgi bin wiki pl e Documentation et m thodes agiles http martinfowler com bliki CodeAsDocumentation html e Deux blogs de r flexions sur les pratiques PHP en anglais http phplens com phpeverywhere http ilia ws e L outil SimpleTest http www onpk net php simpletest z R F RE
108. code L utilisation des tableaux se limite dans la plupart des cas des op rations ponctuelles Un document est fig la manipulation des donn es demande beaucoup plus de ressour ces qu un tableau ou un objet parseurs XML s rialiseurs etc Is manquent parfois de souplesse par rap port aux tableaux Leur utilisation impose une logique diff rente de l approche proc durale dont la ma trise est longue Les temps de traitements sont l g rement plus longs qu en mode proc dural Exploiter les points forts de PHP les m ta structures ES CHAPITRE 11 Les tableaux Quand et comment utiliser des tableaux En PHP les tableaux sont un couteau suisse indispensable pour manipuler des don n es sous toutes formes listes associations de valeurs matrices enregistrements etc Comme nous le verrons plus loin de nombreuses fonctions accompagnent la gestion des tableaux Nous pouvons les classer dans les cat gories suivantes e fonctions de tris filtres combinaisons et r organisation de donn es d doublon nage etc e fonctions de comparaison et de fusion entre plusieurs tableaux e fonctions de simulation de piles et de files e fonctions de parcours et d ex cution effectuer des op rations en masse appliquer des fonctions sur les cl s ou les valeurs e fonctions de transformation depuis ou vers d autres structures de donn es chat nes de caract res variables etc e fonctions d
109. commentaires et votre code Choisissez un style de commentaire que vous respecterez partout 3 Le code est un commentaire Il doit tre lisible et rang de mani re ce que l on comprenne ce qu il fait Respectez lindentation pr f rez un style a r un style trop compact choisissez judicieuse ment les noms de vos classes fonctions variables et constantes Simplifier et p renniser un d veloppement PHP 325 CHAPITRE 13 4 Respectez la phpdoc Si vous g n rez une documentation HTML ou PDF respectez la syntaxe de la phpdoc de mani re ce que votre documentation soit claire et compl te La phpdoc est la convention la plus utilis e pour commenter un code PHP Plusieurs outils per mettent de concevoir un document de synth se partir de ces conventions dont le fameux PHPDocumentor gt http www phpdoc org 5 Fixez vous des conventions De cette mani re le relecteur na pas r apprendre d un fichier l autre une nou velle politique d utilisation des commentaires Un livre doit galement poss der des conventions d criture fixes gras important italique citation etc Habituer le lecteur ces conventions lui permet de trouver ce qu il cherche plus rapi dement Vous pouvez par exemple adopter des conventions pour vos en t tes de fichiers la nature des informations contenues dans vos commentaires les en t tes de classes et de fonctions etc 6 vitez les redondances Un
110. d un client SOAP ou d une base de donn es Impl menter la transformation des donn es d un tableau en un format XML de son choix est extr mement facile Il existe peu d extensions r alisant cette op ration En revanche beaucoup de scripts PHP permettent des g n rations de flux XML sp cifi ques comme RSS ou ATOM Figure 11 22 De l objet au document XML Transformation Reflexion Transformation gt Feuille de styles Affichage Transmission WDDX 7 Vers BD a Objet M ti SOAP jet M tier y Stockage Proc dure Template 000 Outils existants Les outils suivants sont disponibles au sein de la plate forme PHP et effectuent des transformations de tableaux en documents XML ER Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Tableau 11 10 Outils existants pour passer des tableaux aux documents XML Outil Description Utilit de la transformation WDDX Permet de s rialiser des donn es dont des Ici la s rialisation d un tableau en document tableaux XML permet le transfert et le stockage de ses structures SOAP SOAP et XML RPC sont des protocoles de Les donn es chang es entre deux entit s XML RPC service web bas s sur le format XML d un service web peuvent tre des tableaux Les moteurs de templates Smarty etc Un moteur de templates construit un docu ment texte partir d un mod le et de don n es Ce document texte peut tre un
111. d j expliqu en d tail au chapitre 2 le principe du motif MVC appliqu aux applications PHP nous n y reviendrons donc pas ici Le pont Bridge Le pont est un autre m canisme d adaptation utilis pour faire collaborer deux sys t mes h t rog nes Principe du pont Une classe abstraite Abstraction dispose d un m canisme qui maintient une r f rence sur un objet ConcreteImplementor issu d une interface Implementor Ainsi tout objet cr partir de Abstraction pourra faire appel une instance de Concretelmplementor Mod lisation en UML pour PHP Figure 10 9 Le motif pont DEUXI ME PARTIE Principe deux applications diff rentes partagent les m me sessions r Contexte 1 a r Contexte 2 Session Objet2 Session Objet1 Mise en pratique Un site web A dispose d un objet SessionA qui impl mente une interface SessionInterfaceA SessionA sert stocker des donn es de session Il est d cid de fusionner le site web A avec un site web B Certaines donn es des sessions du site B sont les m mes que celles du site A Nous devons faire en sorte que les sessions utilisateurs de A et B soient les m mes Nous allons donc impl menter un pont SessionB qui remplacera l ancien objet du m me nom sans modifier son comportement vu de l ext rieur SessionB maintiendra une r f rence sur SessionA afin que les sites web B et disposent des m mes ses sions util
112. d acqu rir des comp tences autour des technologies Lotus Nos d marches l encontre de cette technologie pour nos futurs projets seront ainsi simplifi es Nous avons renforc nos comp tences sur ce projet d envergure et pris conscience de l ampleur des probl matiques caus es par la structure tr s permissive des bases Lotus R F RENCE Romain Bourdon est galement auteur de Wampserver Wampserver est un outil qui installe et configure Apache MySQL PHP et plusieurs outils d administra tion en moins de 5 minutes sous Windows Il est tr s pratique pour installer un environnement d ex cu tion clair sur un poste de d veloppement gt http www wampserver com T moignages d utilisateurs 451 CHAPITRE 18 Matthieu Mary ing nieur de d veloppement chez Travelsoft Travelsoft est une soci t de services en informatique sp cialis e dans les applications en rapport avec le voyage Ses clients sont des compagnies a riennes des agences de voyages et des tour op rateurs Dans un environnement domin par les technologies J2EE PHP commence se faire une place dans la couche pr sentation de plusieurs applications Pouvez vous vous pr senter Je m appelle Matthieu Mary Biologiste de formation j ai rejoint l univers du d ve loppement informatique et plus particuli rement les technologies Web il y a quatre ans mes heures perdues je participe ma fa on l panouissement de la
113. de ce fait largement document La documentation forte de ses nombreux contributeurs est constamment jour depuis des ann es Elle est accompagn e de nombreux exemples et retours d exp riences utiles Plusieurs forums traitent de sujets li s au PHP accompagnant ce mou vement de diffusion de l information Quels sont les apports de PHP en termes de productivit Sa simplicit Elle est depuis le d but la cl de son succ s aupr s de nombreux d veloppeurs de tous niveaux Son installation et son apprentissage est rapide gr ce la documentation aux nombreux ouvrages sur le sujet et une communaut grandissante de d ve loppeurs passionn s Sa similitude avec d autres plates formes populaires C Java PHP est syntaxiquement similaire aux langages C et Java Les d veloppeurs issus de ces mondes ont la possibilit de se lancer dans PHP plus rapidement que les autres Nous verrons par la suite qu ils poss dent galement un atout celui d avoir acquis une discipline et des connaissances indispensables au d veloppement de projets ambitieux Son adaptation aux d butants Pour ceux qui ne sont pas familiaris s avec la programmation l apprentissage des bases de PHP est rapide Les ressources PHP pour les d butants abondent et per mettent nimporte qui d tre rapidement op rationnel En revanche il faut du temps et de la rigueur pour aller plus loin et progresser dans de bonnes conditions Un d b
114. de cette d pendance son d ploiement dans un environnement n cessitera la pr sence du framework e L utilisation d un framework rend toutes vos applications d pendantes de la qua lit de ce framework Si vous utilisez un framework dont vous ne ma trisez pas les rouages et qu un probl me survient vous risquez d tre bloqu e Enfin un framework peut apporter un degr de complexit suppl mentaire ainsi que du code mort L utilisation d un gros framework pour r pondre un besoin simple n est pas forc ment la bonne solution CULTURE Le code mort Il arrive qu une portion de code ne soit jamais atteinte lors de l ex cution du programme suite une erreur de logique dans l algorithme ou parce que nous n utilisons jamais la fonctionnalit qu elle impl mente Cette portion de code est nomm e code mort Il existe galement plusieurs types de frameworks e Les frameworks g n riques sont adapt s au d veloppement de tout type d appli cation l inverse les frameworks sp cialis s mettent en place un m canisme et propo sent des ressources sp cialement adapt es une utilisation donn e de PHP Choisir les ressources et les supports de donn es Choix d un framework existant CHAPITRE 7 De nombreux frameworks PHP sont mis disposition sur Internet souvent gratui tement Pour bien choisir voici une liste de crit res dont il faut tenir compte Nom Ambivalence ATK 5 AWF
115. de d veloppement disposition des d veloppeurs sert effec tuer des tests en interne sur les d veloppements en cours L environnement de recette ou de pr production souvent ouvert lext rieur la mani re d un Extranet permet des intervenants clients testeurs d appr cier la progression des travaux et d effectuer des tests d utilisation e L environnement de production h berge les versions stables des applications Cet environnement doit tre prot g robuste et ind pendant des autres environne ments D veloppement et tests continus Environnement de unitaires recette Version valid e par j l quipe de _ D veloppement d vel ent LE aci quipe de d veloppement y Rapport de bogues Environnement de i Environnement de Recette Version stable valid e Production par l quipe projet L Tests manuels Utilisation d utilisation courante quipe recette Utilisateurs finaux Figure 4 6 Le trio d veloppement recette production La figure 4 6 illustre le r le de ces environnements travers les proc dures qui les concernent 98 Organisation du projet conventions et outils PREMI RE PARTIE Apports et contraintes d un environnement d ex cution Des outils et des param tres communs Travailler plusieurs sur le m me projet et des postes de travail compl tement ind pendants deviendrait rapidement contraignant Les d vel
116. de d veloppement en PHP TROISI ME PARTIE Figure 14 19 Principe de base Appel de la fonctionnalit x de la mise en cache Requ te f y cache Appeler la Cach gt fonction M moire X partag e oui T j Y y R cup rer Mettre le Disque les donn es r sultat en i en cache cache 1 Base de donn es Fin Utilisation d un outil existant Quelques outils sont votre disposition Certains sont d di s la gestion d un cache d autres proposent une option de mise en cache Voici quelques exemples e outils d di s la mise en cache jpcache crit en PHP Alternative PHP Cache APC crit en C Zend Cache etc e outils proposant des mises en cache Smarty Apache2 mod_cache SPIP et de nombreux autres CMS Apache mod_cache et jpcache sont des outils de cache haut niveau qui assurent une politique de mise en cache de pages HTML l inverse APC peut tre un outil bas niveau pour la mise en cache des tableaux opcodes Nous reviendrons plus loin sur ce principe de mise en cache bas niveau Quelques liens utiles vers des outils de mise en cache jpcache gt http www jpcache com PEAR Cache http pear php net package Cache PEAR Cache _Lite gt http pear php net package Cache_Lite APC http pecl php net package APC Apache mod_cache http httpd apache org docs 2 0 mod mod_cache html Assurer de
117. de donn es copyright Copyright c 2005 MaSociete package contentmanagement author Guillaume Pon on lt guillaume poncon wanadoo fr gt 7 class PagesManager extends BDManager JR x 7 Recherche d informations sur une page Exemple d utilisation lt code gt pageld PagesManager getLastPagelId page PagesManager getPagelnfo pageld echo pagel title lt code gt param int id identifiant de la page return mixed false si erreur ou tableau associatif public final function getPagelnfo id Utilisation d un g n rateur de documentation Le g n rateur de documentation cr e un document partir d informations extraites du code source d une ou plusieurs application s La documentation finale peut con tenir les informations suivantes cela varie en fonction des g n rateurs la liste ordonn e des classes des fonctions et des fichiers Simplifier et p renniser un d veloppement PHP EX CHAPITRE 13 e la hi rarchie des classes e une documentation compl te du contenu de chaque classe description des classes et des m thodes tri par port e etc une documentation compl te du contenu de chaque fichier liste des classes fonc tions constantes et attributs de classes avec documentation associ e e des statistiques nombre de classes fonctions lignes de code etc un index de mots cl s bas sur les noms de classes
118. de g rer les erreurs est de mettre un maximum de if chaque fois qu une action choue vous pouvez ainsi intercepter l erreur L usage des excep tions pr sent plus haut est une bonne mani re d viter cela Traitement automatique des erreurs Plusieurs fonctions tr s pratiques sont votre disposition pour g rer les erreurs Avec les fonctions set_error_handler et set_exception_handler vous d clarez une fonction utilisateur qui sera appel e syst matiquement lorsqu une erreur ou une exception surviendra Vous pouvez ainsi centraliser et personnaliser la gestion des erreurs et des exceptions e Les fonctions debug_backtraceQ et debug_print_backtrace donnent des informations un instant t sur la fonction la ligne le fichier et la classe courante le type de classe courante et la liste des arguments pass s dans la fonction courante e Les fonctions trigger_error et user_error d clenchent une erreur utilisa teur user_error est un alias de trigger_error e La fonction error_reportingO fixe le niveau d erreur la vol e Il est courant de mettre en place dans les fonctions handler un m canisme affi chant les informations de mani re personnalis e et les loguant Les fonctions pr c dentes sont d crites dans la documentation officielle de PHP qui contient par ailleurs de nombreux exemples de classes de d bogage http www php net manual fr ref errorfunc php Un lien qui ouvre l diteu
119. de la couleur et du style Chaque couleur a une signification particuli re mot cl fonction ou m thode cha ne de caract res op rateur etc Tout contenu de structure fonction m thode classe etc doit tre mis en exergue par un retrait afin d am liorer la lisibilit du code L indentation automatique g re ce retrait pour le d veloppeur au cours de la frappe La frappe d une fonction ou d un mot cl n est jamais l abri d une erreur L auto compl tion permet de s assurer que le mot cl frapp est correct et de gagner du temps Concr tement le d veloppeur tape le d but d un mot cl htm puis un sim ple raccourci clavier permet de compl ter le mot htmlspecialchars chaque enregistrement d un fichier contenant du code PHP une analyse est effec tu e afin de d celer les ventuelles erreurs de syntaxe parse error Un simple raccourci clavier ou clic sur un bouton permet de g n rer une documenta tion partir des commentaires du code source Un outil comme PHPDocumentor qui se base sur les balises phpdoc est souvent int gr l diteur dans Zend Studio par exemple pour effectuer cette g n ration Ce petit outil permet de naviguer dans les fonctions les classes et les m thodes d un fichier ou d une application gr ce un arbre de type explorateur mis jour en temps r el Cette fonctionnalit int gre dans l diteur un client CVS ou Subversion qui g re au minimum l extraction la m
120. de version il est juste l par commodit car il permet de retrouver l origine de la branche qui sera cr e par la suite et portera le nom QA_2_0_O Gr ce la branche QA_2_0_0 la version 2 de l application peut tre d velopp e en parall le des mises jour de la version 1 Notons qu au sens PEAR seuls les tags pr c d s de RELEASE_ font office de versions officielles Ainsi la moulinette qui g n re les paquetages correspondant aux diff rentes versions et r visions poss de un rep re lui permettant de ne traiter que les clich s valides L indicatif RCx est utilis lorsqu un livrable doit tre extrait et d ploy mais n atteint pas encore tout fait les objectifs fix s pour la future r vision Cet indicatif signifie Release Candidate et peut tre incr ment comme suit RC1 RC2 D finir des conventions pour la conception d applications PHP 8 CHAPITRE 2 CULTURE Donner un sens la parit de la r vision Certains projets donnent un sens la parit de la r vision Par exemple les r visions paires font r f rence des tats stabilis s de l application corrections de bogues tandis que les r visions impaires font r f rence des ajouts de fonctionnalit s Ce syst me peut s av rer pratique pour les applications d ve lopp es en marches d escalier c est dire avec des it rations r guli res faisant l objet de d ploiements successifs Une fois qu une nouvel
121. des forwards de port c est dire des branchements entre les ports d une m me machine ou de plusieurs machines diff rentes situ es dans le r seau local Un pare feu mat riel est un bo tier d di la s curit Certains routeurs int grent un pare feu et des fonctionnalit s pratiques telles que le partage de connexion Internet nat Un bo tier d di est g n ralement plus facile administrer qu un quivalent logiciel Pour une infrastructure de production sensible il sera d usage de choisir un bon boi tier exemple NetScreen SonicWall Watchguard etc ou d adopter une solution logicielle r put e que vous ma trisez exemple OpenBSD Packet Filter R F RENCE S curiser un r seau avec Linux Nous abordons essentiellement ici les sujets de s curit li s l h bergement d une infrastructure web adapt e la mise en place d applications PHP Toutefois la s curit d un r seau ne s arr te pas l Ce sujet sensible est abord dans de nombreux ouvrages Le suivant est id al pour l administrateur d butant qui souhaite apprendre ou exp riment qui souhaite avoir un ouvrage ludique reprenant l essentiel de la s curit d un r seau bas sur le syst me Linux 9 S curiser un r seau Linux de Bernard Boutherin et Beno t Delaunay aux ditions Eyrolles Pr voir tous les cas de catastrophes possibles Nous allons balayer ici une liste d incidents souvent rencontr s
122. des proc dures de v rification checkstyle monitoring analyse de logs g n ration de la documentation etc Les sections qui suivent vous donneront quelques exemples de proc dures utiles planifier Ces proc dures sont d autant plus utiles que le nombre de vos applications et de vos collaborateurs augmente Contr les automatis s et lancement des tests Le lancement des tests est une op ration tr s importante pour maintenir l int grit d une application Lorsque les d veloppements avancent le niveau de complexit des applications augmente et la ma trise globale de l ensemble des briques logicielles demande toujours davantage d efforts Les tests sont des gardiens ils sont garants du bon fonctionnement de l ensemble des briques l mentaires d une application Mettez en place votre op ration de contr le en vous aidant des documentations qui accompagnent les outils que vous utilisez SimpleTest PHPUnit etc Si vous uti lisez l architecture de la figure 4 10 section pr c dente vous pouvez cr er une ou plusieurs nouvelles actions La figure 4 11 illustre une id e de proc dure de contr le global it rant sur toutes les applications d ploy es d un environnement Figure 4 11 Id e de proc dure de contr le des applications lancer toutes les nuits Comportement anormal de l applicatio Disfonctionnement d une fonction ou d une m thode Code pas propre Parse
123. des ressources Les sections pr c dentes ainsi que le chapitre 11 vous donneront quelques conseils pour une utilisation optimale des objets dans le sens de l conomie e Utilisation d objets sans les instancier e Mise jour du mod le pour viter les d pendances et les chargements inutiles Exploiter les fonctions natives fournies par PHP PHP poss de un tr s grand nombre de fonctions natives effectuant des op rations th oriquement co teuses Travailler avec la documentation sous les yeux et se poser r guli rement la question est ce qu il existe une fonction pour faire cela permet souvent de d velopper plus vite et plus efficacement EUR Mod lisation en UML pour PHP DEUXI ME PARTIE Un des exemples les plus repr sentatifs concerne l utilisation d expressions r guli res pour la manipulation de cha nes de caract res La section utilisation des expressions r guli res du chapitre 12 exposera quelques exemples concrets Favoriser l interop rabilit et la p rennit du mod le Les couches d abstraction Les couches d abstraction sont tr s utilis es en informatique On les rencontre dans le mod le OSI r seaux et dans l accumulation des couches logicielles assembleur C PHP de la programmation Ce principe est tr s simple le travail est divis en couches e Les plus basses sont proches du langage machine e Les plus hautes sont proches des aspects visuels et du langage hum
124. diagramme de s quence is ae he nn don ts 195 Le diagramme d activit s 54 aie ne ana Nas DRASS ES 195 Le diagramme d collboratiohts 24 se fes niet udeneselsanaeseth 198 Du mod le impl mentation 198 Utilisation dun g n rateur de code su sinteseintee an un te nedr ss 198 Qu est ce qu un g n rateur de code ns este een 198 UMLIPHPS Ia i aE SRE a E a R RANS R 199 MDA la voie du futur oonan uuueuananuur rarere eror rerun rru 200 CHAPITRE 9 Optimiser le mod le pour PHP 201 Pratiques de mod lisation agile 202 Qu est ce que la mod lisation agile 202 Mod lisation agile pour PHP Se a TS en en na eos 202 Particularit s et limites de la POO avec PHP 5 205 Fonctionnalit s objet disponibles avec PHP 5 205 L auto chargement atlas ne pee nn 205 La surcharge de propri t s et de m thodes 4 206 Conseils d usage pour am liorer la performance des objets 209 L instanciation d une classe est elle utile 210 Acc l rer l acc s aux objets DEAN hs EL ns EAN Re 210 Le tout objet n est pas une bonne pratique pour PHP 212 S adapter aux caract ristiques de PHP 213 Limitation du code parser noun nuunuu ununuran rrr r rene
125. dispos s n importe comment ils ne sont pas agr ables relire Bien s r il existe d autres raisons de se plaindre et cette liste peut tre compl t e Si vous travaillez en quipe faites relire votre code plusieurs de vos collaborateurs et notez les remarques qui vous sont faites plusieurs reprises Vous pourrez ainsi faire voluer vos commentaires en cons quence 10 astuces pour b cler vos commentaires coup s r Si vous souhaitez que vos relecteurs s arrachent les cheveux en lisant vos commen taires voici quelques formules qui fonctionnent tous les coups Simplifier et p renniser un d veloppement PHP ER CHAPITRE 13 1 Mettez en beaucoup pour ne rien dire Cette m thode est une fonction de la classe machin qui est priv e car il ne faut pas qu on puisse y acc der de l exterieur par un souci de s curit Elle n est pas final car etc 2 Encombrez votre code de remarques inutiles Fonction trucchose function trucchose Q C 3 Faites des phrases longues et pompeuses Cette sublime fonction que j appr cie beaucoup parse le fichier de configuration et effectue une op ration de transfert habile vers une structure XML d finie par la joyeuse DTD trucchose dtd 4 Exprimez vos sentiments travers les commentaires Cet algo trop naze parse ce fichier de conf qui m nerve car il n arr te pas de changer 5 Employez un langage SMS incompr he
126. dn_login cn Manager dc fraternity dc fr Certaines fonctions sont galement personnalis es La fonction var_dump par exemple qui visualise le contenu d une variable s affiche en couleur Xdebug poss de un grand nombre de fonctions utiles pour le profiling pour l affi chage d informations et pour le d bogage distance Vous trouverez une documenta tion compl te sur le site officiel de Xdebug l adresse suivante http xdebug org docs php KCacheGrind WinCacheGrind KCacheGrind et WinCacheGrind sont des outils d analyse de traces KcacheGrind permet d analyser graphiquement le parcours d une requ te la cha ne des appels le temps d ex cution de chaque action et leur consommation m moire WinCache Grind est un outil plus simple pour Windows inspir de KCacheGrind WinCacheGrind Comme nous pouvons le voir sur la figure 12 9 WinCacheGrind poss de une fen tre explorateur contenant l arbre des appels Chaque fonction PHP ou utilisateur appel e fait l objet d une entr e dans l arbre La fen tre de droite comporte des onglets pour visualiser les diff rents appels effectu s sous forme de listes WinCacheGrind est une interface conviviale et simple pour Windows En revanche pour l instant il ne produit pas d l ments graphiques comme KCacheGrind et ne fonctionne qu avec la version 2 de Xdebug Assurer la qualit d un d veloppement PHP EH CHAPITRE 12 Figure 12 9 WinCa
127. donn es Vous trouverez de multiples extensions dans la documentation de PHP et de PEAR bas es sur les formats sp cifiques gt http www php net manual fr http pear php net manual fr DEUXI ME PARTIE Mod lisation en UML pour PHP Ces chapitres proposent une introduction aux pratiques utiles de mod lisa tion et aux motifs de conception design patterns en tenant compte des sp cificit s de PHP Nous tudierons galement le comportement de PHP en POO et les techni ques usuelles d optimisation Vous aurez ainsi toutes les cartes en main pour aborder avec UML une architecture volutive et p renne l ments de mod lisation utiles PHP Lart de d velopper en PHP et celui de mod liser commencent peine se c toyer Ce n est pourtant pas le cas avec Java C ou C qui mettent en uvre depuis leur naissance des concepts compatibles avec les pratiques de mod lisation notamment la programmation orient e objet Il est difficilement possible de ma triser de t te l ensemble des caract ristiques fonc tionnelles et techniques des applications complexes que l on retrouve souvent dans le monde professionnel Pour le s rieux de ces d veloppements la mod lisation est une discipline essentielle Ce chapitre portera sur les trois services fondamentaux qu apporte la mod lisation l adaptation aux besoins la d finition des exigences et des contraintes fonctionnelles et l organisation
128. dont voici quelques exemples Merise et UML de Joseph Gabay aux ditions Dunod Mod les de donn es de Bertrand Bisson aux ditions Economia 2 L essentiel sur Merise de Dominique Dionisi aux ditions Eyrolles Mod le conceptuel de donn es MCD Le mod le conceptuel de donn es MCD d crit une base de donn es d un point de vue utilisateur c est dire avec des mots et des diagrammes faciles comprendre Ce mod le est galement appel diagramme entit association La figure 7 6 donne un exemple de M C D Figure 7 6 5 Livres Auteurs Un mod le conceptuel de R dig par 0 00 donn es simple MCD Identifiant de livre date de r daction Identifiant d auteur Titre du livre Pr nom R sum Nom Nombre de pages Num ro de t l phone Actif ou inactif identifiant i Adresse postale Class dans Titre Description gt une cat gorie peut correspondre 0 ou plusieurs livres 0 00 MC D gt Un livre peut tre class dans 1 et 1 seule cat gorie 1 1 Dans notre exemple e Les listes Livres Auteurs et Cat gories sont appel es des entit s Organisation du projet conventions et outils PREMI RE PARTIE La liste Identifiant de livre jusqu Nombre de pages d finit les afributs de l entit Livres Identifiant de livre est soulign car il caract rise l identifiant unique qui va permettre de reconna tre chaque enregistrement c
129. du service aux internautes 100 Disponibilit du service en fonctionnement optimal 99 866 Disponibilit de la connectivit internet Taux de balayage du moniteur sur tout le mois liste des plages d erreurs g n rant une indisponibilit Aucune erreur grave d tect e sur cette p riode Autres erreurs Ces erreurs n emp chent pas l internaute de se connecter au site mais l emp che d acc der certaines fonctionnalit s 2005 07 13 2005 07 13 Cible http inaccessible il s agit certainement d une erreur provenant des 05 00 08 06 00 07 couches basses du r seau ou d un probl me de d ploiement Indisponibilit constat e du moniteur Aucun probl me d tect sur celle p riode Aper u visuel des taux de dispomibilit quotidiens 0 0 0 o APEE 0 0 0 DNA TI 0 0 0 M EU Da cos io o 0 En o 0 0 0 0 0 M M M M o LETS L M M M M M M M M M M M M 96 M M M M M M M M M M M M M M 1 S 4 s 6 7 e MU 11 12 13 14 15 ROM 18 19 20 21 22 SSA 25 26 27 28 29 Sum VERSION L MMIV M IL M M 2 v LU M M V ESS L M ven L gende Partie verte site totalement accessible Partie bleue site accessible mais difficult s rencontr es Partie rouge site diffialement accessible ou inaccessible Parlie jaune probl me de r seau interne ou inconnu Partie grise p riode non enregistr e par le moniteur M 100 Outil Quel outil pour simuler les actions d un utilisateur sur un site Un ut
130. environne ment qui requiert l impl mentation d une interface B N anmoins une classe ne peut pas impl menter deux interfaces alors comment faire Le motif adaptateur permet de transformer un objet afin qu il soit issu d une autre interface que celle d origine Cela peut tre utile pour faire communiquer deux appli cations entre elles qui utilisent des objets identiques issus d interfaces diff rentes Les motifs de conception Design Patterns CHAPITRE 10 Principe de l adaptateur Une classe ConcreteSource impl mente une interface Source voir figure 10 8 La classe Client utilise l objet ConcreteSource mais elle reconna t le type Target et non le type Source La classe ProductAdapter intervient alors pour cr er une instance de la classe ConcreteSource modifi e de mani re tre issue de l interface Target Source Figure 10 8 Principe Principe du motif adaptateur r Contexte 1 Contexte 2 Transformation Product 4 de l objet Product I Target EN ProductAdapter C aono arget pour qu il impl mente Product du contexte 1 MVC Model View Controler Ce motif est tr s la mode depuis que la programmation objet est possible en PHP Il s adapte tr s bien aux besoins des applications web On Putilise g n ralement pour s parer les travaux de conception de logique m tier et d IHM Interface homme machine Nous avons
131. et la charge du serveur Etre conscient des ressources que consomme chaque action effectu e dans un algo rithme est d terminant Pour cela il vous faut deux choses de bons r flexes et de bons outils Commen ons d s pr sent par les bons r flexes criture sur disque Les acc s disque sont particuli rement lents Le disque est un l ment m canique qui n cessite pour l criture et la lecture des actions physiques et des verrouillages Limiter les acc s disque est fondamental si vous envisagez de rendre votre application performante Optimisation de l criture sur disque Si vous devez tout de m me crire sur le disque sachez que ces op rations sont par tag es entre plusieurs processus Plus vos acc s disque sont morcel s et espac s dans le temps lors de l ex cution d une requ te plus vos performances seront basses Regroupez autant que possible dans le temps les op rations qui entra nent des acc s disque N effectuez aucune autre op ration que la lecture ou l criture entre Fopen et fclose Si vous devez lire ou crire des fichiers en entier utilisez des fonctions comme file file _get_contents ou file_put_contents qui effectuent les ouver tures et fermetures de fichiers pour vous Une session engendre galement des acc s disque et des verrouillages Ne laissez pas de session ouverte sur toute la dur e d une requ te faites appel session_write_close le plus t t possible Alterna
132. et travaux ponctuels 129 VIM se es to ia aaa a a a e 129 DU La E E ar te E E E 129 Edit Plusie ia a r r E a Ao a e aA 129 DCE en a a M ee a a a SU EE 130 T Te E E A EE A OE OT A 130 Kateronennenenenenni n an a a e a e e 130 SPHPE dGra at a E E P A A A E 130 Un test pour choisir son diteur 131 De guestionn te w octe RE ie ne Re Nr ER 131 Les r ponses us ie Re ts fe ANA ne et A a 132 CHAPITRE 6 Choisir les outils d administration 135 Qu est ce qu un outil d administration 136 Simplier les d veloppements 583 o arraren 137 Se d barrasser des t ches contraignantes 4 4 3044 137 diteurs de bases de donn es 139 quoi servent ils Le ne eat en 139 diteurs courants A ae tee fn 139 PhoMyAdmin se d Mate dr ee RU R ent a Lan 139 PDP RAM Eds S y ee sa te does DEA E S ioie 140 SOPHENOROBR vrai vents O E suis darts 140 PONT les autre SGBD ESS an PRES ARS Er A nt ane 141 Gestionnaires de sources de donn es LDAP Flux etc 141 Utilit des diteurs de sources de donn es 141 diteurs courants eeeeeeeeeeeeeeeeeeee 142 Table des mati res ET Interfaces de d bogage 24e tes tenes Dee date er en frire 143 Limites du d bogage sans outil ad quat 143 D finir une strat gie de d bogage globale
133. framework 156 Best practices PHP 5 POO e UML Design patterns XP SPL PEAR e Tests unitaires e SVN Refactoring Optimisation Nul ne conteste les qualit s de PHP en tant que plate forme de d veloppement web simplicit souplesse richesse Mais encore faut il pour en tirer parti savoir adopter une d marche choisir une architecture adapt e tablir des r gles et des conventions et s outiller en cons quence Cet ouvrage r pertorie de la conception l exploitation les meilleures pratiques de d veloppement PHP et les erreurs courantes viter Condens d expertise acquise au cours de nombreuses ann es d adoption de PHP en entreprise il guide le d veloppeur le chef de projet et l architecte dans l optimi sation d applications professionnelles Universitaire et dipl m de L PITA professionnel dans une SSII et membre actif de plusieurs associations li es PHP dont l AFUP Association fran aise des utilisateurs de PHP Guillaume Pon on travaille depuis 7 ans sur des projets informatiques pour le Web En collaboration troite avec les meilleurs architectes PHP et J2EE francophones il contribue en tant qu expert formateur et conf rencier la r ussite de nombreux projets professionnels et associatifs ann eah in RC IT ONCE Quelles r gles pour la cr ation logicielle Quelles m thodes quels outils L enjeu est de taille garantir la souplesse et l interop rabilit des
134. ftpe 21 ftp data 20 ion t ex cu Environnement d ANA NA NA NA NA NA NA NA VA AA A AAA AR ananaw Utilisateurs ggg Pirates RER echanges postgresql mysql nfs rsync https idap irc imap ntp horloge news E gt EQ gt 000000 000 gt 10000 5432 3306 2049 873 PRES 443 389 194 143 ES 123 PRE En UE VEN LUE EE KL 2 Hackers Assurer la disponibilit s curit et maintenance 409 CHAPITRE 16 Si nous devions comparer ce syst me la vie r elle la requ te utilisateur trouver ma carte grise devrait tre li e une adresse Pr fecture X 42 rue de Godhavn 78402 Paris adresse IP et l emplacement des services administratifs porte 80 port du service HTTP Sur l exemple de la figure 16 2 le pare feu en place refuse toute connexion venant de l ext rieur sauf celles qui sont ouvertes ou partiellement ouvertes savoir e Les portes d entr e publiques vers le serveur HTTP et HTTPS HTTP s cu ris e Des portes d entr e r serv es vers plusieurs serveurs RSYNC synchronisation de sauvegarde POP bo te aux lettres lectronique interne des administrateurs SSH acc s au serveur en ligne de commande et FTP transfert de fichiers Un pare feu ne se limite pas louverture et la fermeture des ports Ces actions peu vent se faire dans les deux sens pour chaque port Il est galement possible d effectuer
135. gt book htmlspecialchars lt div gt foreach lt body gt lt html gt Dans cet exemple tr s simple de template title et books sont des variables d clar es dans la partie d veloppement book est une variable mise jour chaque it ration de la boucle foreach foreach est un mot cl de la syntaxe Smarty permettant d it rer sur les l ments d un tableau htmlspecialchars est un modificateur correspondant une fonction PHP existante et sont des d limiteurs de commentaires conform ment la syntaxe d finie par Smarty Utilisation de PHP comme moteur de templates PHP est par lui m me un excellent moteur de templates Les designers qui connais sent la base de PHP peuvent tr s facilement cr er des templates de ce type Ils ont l avantage de ne n cessiter aucune ressource mis part l interpr teur PHP Un template PHP lt html gt lt head gt lt title gt lt php echo title gt lt title gt lt head gt lt body gt lt h1 gt lt php echo title gt lt h1 gt lt php Affichage de la liste des ouvrages gt lt div class book_1ist gt lt php foreach books AS book gt Simplifier et p renniser un d veloppement PHP ET CHAPITRE 13 lt div class bookline gt lt php echo htmlspecialchars book gt lt div gt lt php foreach gt lt body gt lt html gt Si les avantages de cette m thode sont la simplicit et l
136. historique des d veloppements est difficile suivre Ces probl mes ont conduit les d veloppeurs innover dans la cr a tion d outils sp cialis s comme CVS ou Subversion Ce chapitre vous pr sente d abord l utilit d un gestionnaire de versions ou d p t de donn es et quelques bonnes pratiques de mise en uvre avec PHP Puis il aborde les outils CVS et Subversion avec de nombreux exemples pratiques utiliser dans ses propres travaux Organisation du projet conventions et outils PREMI RE PARTIE La gestion des versions en PHP ette petite introduction th orique va nous permettre d aborder l utilit et les principes Cette petite introduction th oriq permettre d aborder l utilit et les princip e fonctionnement d un gestionnaire de versions Seront abord es ensuite les r gles de fonct t d un gest d Seront abord te les r gl g n rales de bonne conduite li es l utilisation des outils de gestion des versions Utilit d un gestionnaire de versions Un gestionnaire de versions r pond plusieurs probl matiques li es au partage de code source et de donn es Son r le principal est d assurer la coh rence de la gestion des sources dans le cadre de d veloppements r alis s en quipe Il s assurera qu aucune donn e ne soit perdue que la version des fichiers sur chaque poste de d veloppement soit jour et que les conflits criture sur le m me fichier par deux personnes diff rentes s
137. intervenant pour s approprier le projet et sa m thode de d veloppement sera un indicateur pr cieux Permettre la r alisation de projets professionnels ambitieux En exploitant le potentiel de la derni re version de PHP De plus en plus PHP est choisi pour la mise en uvre d applications profession nelles Ces applications deviennent toujours plus exigeantes en termes de perfor mances d interop rabilit et de complexit D finir des conventions pour la conception d applications PHP CHAPITRE 2 Figure 2 1 z Un projet r ussi Anticipation en quelques mots cl s M es volutivit Interop rabilit quilibre P rennit Simplicit Performance Clart Coh rence Perfection La plupart des outils et concepts int gr s la derni re version de PHP ne sont pas nouveaux Les d veloppeurs architectes et chefs de projets y trouveront du d j vu Ils ont davantage vocation combler les manques fonctionnels formul s lors de Puti lisation des anciennes versions que d tre innovants et originaux Les volutions de la plate forme vont donc toujours dans le sens de la fiabilit et du professionnalisme La figure 2 2 illustre un panel de fonctionnalit s d sormais int gralement g r es par PHP Figure 2 2 Quelques outils stabilis s ou apport s par la version 5 de PHP Programmation Orient e Objet Interop rabilit Gestion de flux Java NET XML SOAP Extensions vol
138. l on va au bout des choses parfois contre courant Il me para t impossible d associer XP une autre m thode ou de pratiquer XP 50 Un projet classique comporte une d finition des besoins des sp cifications et une architecture pr d finies et fig es avant le d veloppement puis des livraisons effectu es sur le tard une fois que l application est op rationnelle Au contraire XP privil gie une am lioration permanente du code et de l architecture pour r pondre des besoins qui changent en permanence Tel que le recommande XP je privil gie la vitesse sur la dur e Ma vitesse les matheux penseront la d riv e un instant T d terminera le temps que je pourrai mettre pour effectuer telle ou telle fonctionnalit Plus important encore j essaie d adapter cette vitesse au client il est un membre part enti re de l quipe de d veloppement Un cas un peu particulier est celui d OpenTime o je suis la fois client et d ve loppeur Pour d terminer la priorit de mes t ches de remaniement chaque fonc tionnalit li e fait l objet d un relev de son temps d ex cution Je fais ensuite une analyse crois e entre la fr quence d utilisation et le temps d ex cution de chacune d elles pour rep rer les plus impactantes T moignages CINQUI ME PARTIE Que pensez vous de l utilisation d un framework avec XP Les frameworks ne sont pas ou peu utiles surtout quand
139. l extension PDO y l YY oo a PHP Data Objects Acc s PHP direct i Acc s PHP via PDO Interrogation sp cifique Interrogation unifi via extensions li es compatible avec chaque base i chaque base men Applications ODBC SGBD support s e Adabas D e DB2 e iODBC e Solid e Sybase SQL Anywhere L ODBC unifi de PHP donne acc s plusieurs bases de donn es ayant emprunt la s mantique des APIs ODBC pour leur propres API Pour en savoir plus sur cette extension rendez vous sur la page de documentation http fr php net manual fr ref uodbc php Choisir les ressources et les supports de donn es ET CHAPITRE 7 Cr ation du mod le de base de donn es Il est difficile d laborer la structure d une base de donn es complexe sans un mod le comme il est difficile de construire une maison sans plan Nous allons nous int resser ici une m thode simple et efficace de mod lisation de bases de donn es Ceci est une introduction destin e comprendre le fonctionne ment et l utilit des mod les utilis s Libre vous d en apprendre davantage sur le sujet gr ce un ouvrage sp cialis La m thode li e la notion de MCD Mod le conceptuel de donn es et MPD Mod le physique de donn es se nomme MERISE ALLER PLUS LOIN La mod lisation de bases de donn es et des syst mes d information Ce vaste sujet fait l objet de plusieurs ouvrages
140. la lisibilit du code la maniabilit de l architecture les performances et la s curit des applications PHP ER Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Commenter documenter Les secrets du bon commentaire Commen ons par nous poser une question quel est l objectif du commentaire Dans le fond tout le monde le sait faciliter la compr hension d un code source Savoir se mettre la place du relecteur et imaginer l information utile dont il aura besoin pour s approprier le code est non pas l objectif mais le secret d un commen taire utile Apr s la th orie la pratique le tableau 13 1 num re des plaintes couramment mises par les relecteurs de code PHP Tableau 13 1 Principales plaintes de relecteurs Remarque Cause Je ne comprends pas ce code Il manque vraisemblablement un commentaire l o une partie du code source devient difficile comprendre Comme si on ne le savait pas Il s agit vraisemblablement d un commentaire inutile du genre Fonction bidule juste avant la d claration d une fonction qui s appelle bidule C est quoi ce roman Le commentaire lire est tr s trop long Permettre de compren dre c est un d but Permettre de comprendre vite et bien c est mieux a n a rien voir Le commentaire n a pas volu en m me temps que le code il est devenu inutile et absurde Quel bazard Les commentaires sont
141. lastName Pon on L identifiant de session est fix session_id 47839874 session_start Mise en session partag e de l objet people new people _SESSION people people gt obj persist php affiche l objet lt php Nous pouvez essayer d ex cuter ce fichier sur plusieurs ordinateurs plusieurs fois la suite session_cache_limiter private session_id 47839874 session_start var_dump _SESSION people gt CHAPITRE 9 Er Mod lisation en UML pour PHP DEUXI ME PARTIE obj unregister php d truit la session partag e lt php session_id 47839874 session_start session_destroy gt Dans les exemples pr c dents nous nous d brouillons pour mettre un objet dans une session sp ciale partag e entre tous les visiteurs du site afin de le rendre persistant CULTURE Est ce de la m moire partag e Les performances de ce m canisme d pendront du param trage de votre session et de votre impl men tation On ne peut pas dire qu il s agisse d une mise en m moire partag e d un objet mais d une solu tion alternative de partage qui fonctionne avec un grand nombre d installations de PHP Faites attention de ne pas maintenir la session trop longtemps avec cette solution car vous activez le m canisme de ver rouillage des sessions qui peut ralentir l ex cution de vos requ tes Le chapitre 12 donnera un exemple de mise en m moire parta
142. le chemin absolu vers l extension Enfin nous pouvons tester notre premi re fonction Test de l extension php r echo pm_get_version EX Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE POUR ALLER PLUS LOIN Extensions PHP Pour en savoir plus sur le d veloppement des extensions PHP vous pouvez vous rendre sur la documen tation officielle de PHP et le site de Zend Technologies aux adresses suivantes Introduction gt http www zend com php internals extension writing1 php API Zend gt http www php net manual fr zend php API PHP gt http www php net manual fr api php M THODE Comment g n rer automatiquement son extension Il existe des outils pratiques qui construisent automatiquement le squelette de votre application au lieu de tout faire la main ext_skel et pecl_gen Ces programmes permettent de g n rer les fichiers utiles de votre extension C partir de fichiers de d finition Reportez vous la documentation de ces outils ou aux pr sentations faites dans les talks du site officiel de PHP pour les utiliser gt http talks php net a Planifier son extension O crire l extension Ecrire des exemples PHP comme Remplir les fonctions par le code si l extension existait utile de votre extension ajouter des constantes param tres nn 7 php ini d finir des classes etc D finir les fonctions Ecrire les fonctions de l extension Q Compiler dans un fichier lt
143. le jour Anne Bougnoux Patrick Tonnerre Sophie Hincelin et Libero Maesano et pour la finalisation Ga l Thomas ainsi que Jean Marie Pour m avoir support et soutenu ma famille en particulier mes fr res G rald et Germain et mes parents Catherine et Philippe Pon on Pour leur collaboration active malgr la distance qui nous s pare Zeev Suraski David Goulden Stanislav Malyshev tous trois de la soci t Zend Technologies et G rald Cro s consultant chez Aston Pour leurs contributions ponctuelles et non moins importantes ric Binachon Romain Bourdon Michael Guitton Damien S guy Jean Zundel et KDO Enfin pour leur soutien tous mes collaborateurs de la soci t Travelsoft sans exception avec une mention particuli re Herv Russac administrateur syst me avec qui je par tage non seulement le travail et le bureau mais aussi l emploi du temps Et tous ceux qui ont particip de pr s ou de loin Best practices PHP et que je mai pas cit s ici RESSOURCE En savoir plus sur les contributeurs de ce livre Une page leur est attribu e sur le site de l ouvrage l adresse suivante gt http php openstates org contributeurs html Table des mati res CHAPITRE 1 PHP est il adapt vos besoins 1 Qestce que PHP 6e rires LE en Te eds 2 quoi sett PHPP EUR A Sd nET ee a ERES RON De Et 2 qu s adresse PEL ce etes am ns dar aan ets cat ERE E
144. les adeptes du social engineering font un puzzle Ils ont un but atteindre et se donnent les moyens de trouver et reconstituer les pi ces de l arme qui leur permettra de tirer dans le mille Si vous vous apercevez que votre adjoint ne conna t pas le mot de passe que votre h bergeur lui a fourni ce matin parce que ce dernier ne le lui a pas communiqu alors il est de bon ton de le changer car quelque chose ne tourne pas rond R F RENCE En savoir plus sur le social engineering Le livre suivant relate les r v lations du plus c l bre hacker de la plan te Ses exp riences et ses conseils sont la fois surprenants et utiles conna tre L art de la supercherie de Kevin Mitnick aux ditions Campus Press Mise jour des routines de sauvegarde Selon la fameuse loi de Murphy votre syst me tombera en panne au seul moment ou vous aurez oubli de faire votre sauvegarde La mise en place d une bonne routine li e un rapport d incident que nous verrons plus loin en cas de probl me est une op ration essentielle pour un environnement de production Exemple de routine de sauvegarde Figure 16 3 Actionnement automatique Actionnement manuel Sauvegarde sur un serveur 222 EE miroir qui peut prendre la main Serveur de production Serveur de sauvegarde l Applications PHP n m aa Applications PHP Donn es BD a Taa Donn es BD I Configuration du syst me prm
145. les habitu s s av re rentable et efficace Le roulement des bin mes doit tre r gulier Les partenaires peuvent tre choisis en fonction de plusieurs crit res partage de connaissances sur un sujet ou int r ts des d veloppeurs RETENIR La question des domaines d expertise Ayez bien en t te que le domaine d application d une quipe XP se limite aux d veloppements informati ques En d autres termes les personnes concern es ont le m me domaine d expertise Dans un projet web d autres savoir faire sont n cessaires tels que le design et le graphisme pour com pl ter les travaux Il est entendu que designers et d veloppeurs ne peuvent tre soumis la ma trise de deux domaines d expertises diff rents 38 Organisation du projet conventions et outils PREMI RE PARTIE G rer un projet avec XP Un projet XP poss de un certain nombre de particularit s dont il faut tenir compte dans notre m thode de gestion de projet Rythme de travail Tout lart des intervenants sera de trouver le rythme optimal Ce rythme se dose g n ralement en agissant sur les facteurs de co ts de d lais de qualit et de contenu Les pratiques XP recommandent de jouer galement sur une nouvelle variable l enveloppe fonctionnelle du produit Cette d marche consiste trier les fonctionna lit s par ordre d importance et les impl menter dans cet ordre Le gain apport par ce tri et l impl mentation du stric
146. les param tres de compilation du serveur HTTP ne sont pas cruciaux Assurez vous juste que votre serveur puisse charger des modules dyna miques si vous avez choisi de compiler PHP comme tel Si vous utilisez des fonctionnalit s sp ciales du serveur HTTP module de cache r gles de r criture etc et que ces param tres sont importants pour le fonctionne ment de vos applications il est recommand de disposer en d veloppement de para m tres similaires ceux des serveurs de production et de recette Il est galement possible d installer simplement un binaire du serveur HTTP par l interm diaire d un gestionnaire de paquetages de votre syst me d exploitation par exemple et de compiler PHP en mode dynamique En d autres termes la compilation de PHP ne requiert pas la compilation du serveur HTTP sauf si vous souhaitez compiler PHP en mode statique ce que nous verrons au chapitre 15 Le serveur HTTP le plus utilis pour PHP s appelle Apache Voici un exemple de compilation du serveur Apache en environnement Unix Organisation du projet conventions et outils PREMI RE PARTIE Compilation du serveur HTTP Apache remplacez les mots entre lt et gt par le contenu correspondant wget lt url_jakarta_apache gt apache_ lt version gt tar gz tar xzf apache_ lt version gt tar gz cd apache_ lt version gt configure prefix usr local enable module so make install Ces quelques commandes effec
147. nom_extension gt def Compiler PHP avec l extension e G n rer le squelette Q Tester Cr ation automatique des fichiers Ecrire et ex cuter les jeux de qui permettront l extension de tests puis reprendre l tape 4 compiler fichiers lt nom_fichier gt phpt Figure 14 4 tape de cr ation d une extension en C avec un outil de g n ration Couplage l che Le couplage l che privil gie la d finition de formats d change de donn es Cela permet de faire abstraction de la technologie utilis e et de se calquer sur le besoin m tier et non sur les aspects techniques Assurer des d veloppements PHP performants et polyvalents ES CHAPITRE 14 Figure 14 5 Principe du couplage l che Application 2 interactions entre applications Technologie 2 h t rog nes P Emplacement 2 Application 1 Technologie 1 Emplacement 1 Application 3 Technologie 3 Protocole commun Emplacement 3 Nous pouvons classer ces solutions en deux cat gories e les changes simples WDDX s rialisation etc e les services web SOAP XML REPC REST Tableau 14 1 Solutions techniques de mise en uvre du couplage l che Solution Utilisation Avantages SOAP XML RPC REST Mise en uvre de services web Solution universelle permettant le partage de don n es et de fonctionnalit s DOM Sax SimpleXML Utilisation de flux XML XML est un outil pratique et universel pour le stoc kage et l change de donn es structu
148. objet classe 269 libxml 258 licence BSD 161 PHP 161 462 Best Practices PHP liste noire 412 load balancing Zend Platform 432 LoadModule 404 locality name LDAP 177 Logicreate Framework framework 155 logique m tier 265 longueur de ligne 54 lval 299 M macrocommandes motifs 239 magic_quotes php ini 391 MagpieRSS 142 maintenance charte de d veloppement 31 conventions 29 des donn es 29 30 it rations 30 logicielle 29 proc dures 30 simplifier et r duire 29 technique 29 30 ma trise d uvre 49 d ouvrage 49 make compilation 398 Matthieu Mary 451 max_execution_time php ini 390 MaxDB 166 MCD Mod le conceptuel des donn es 169 MDA Model Driven Architecture 200 Meccano objet classe 269 m diateur motif 242 Medusa framework 155 memento motif 242 m moire 286 include require 286 m nager l utilisation 286 partag e 288 verrou 289 SQLite 292 memory_limit php ini 390 merise 169 Merlin Works framework 155 m taphores XP 36 m ta structure 252 passer de Pune Pautre 274 m thode agile 32 apport 32 condition pour qu elle le soit 32 eXtreme Programming XP 34 liste 32 manipulation d objets 267 principes 32 valeurs 32 33 b tir sa propre 44 coh rence 44 de classe 264 de d veloppement 32 documentation 44 domaines d application 45 gagner du temps 44 lois du succ s 44 magique 208 __ clone 229 introduction 271 simplicit 44 surcharge 207 m tier couche
149. objet r duit l g rement les performances d un script PHP l ex cution La programmation orient e objet r duit la flexibilit pour faire place davan tage de rigueur Un script PHP souple et performant ne peut se contenter d une poli tique tout objet comme en Java En revanche n gliger l utilisation des objets dans certains cas complique les probl matiques de p rennit et de r utilisabilit Voici quelques cas o l utilisation d objets est conseill e La logique m tier Dans une application de commerce en ligne par exemple la logique m tier sera cons titu e de l ensemble des algorithmes qui g rent les produits leur disponibilit et le workflow qui les lie 266 Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Figure 11 11 Code Execution l l Un exemple l 4 D utilisati i jouter d utilisation oy 3 i D but ioh Objets m tiers d objets i proca Ii A l Classes i LA SEE Chargement de 4 1 O C a l utilisateur Instanciation d un utilisateur courant i Instance de l utilisateur courant l i 1 i Utilisateur Yv Utilisateur courant di 1 Cr ation Instanciation d un caddie i r cup ration du LCA caddie Instance de caddie i Caddie c Produit demand D nstanciation d un produit i R cup ration du i SY J produit Instance de produit i Produit f W T i Utilisateur courant A MG l OON 1 RE N m A0
150. outil comme PHPDocumentor d tecte tr s bien la port e d une m thode Ne vous encombrez donc pas avec les tags private protected public final etc qui en d finitive ne font qu encombrer vos commentaires Plus g n ralement vitez d augmenter le volume de vos commentaires avec des g n ralit s videntes au d tri ment de l information utile 7 Soyez jour Il ny a rien de pire qu un commentaire trompeur Lorsque vous mettez un d velop pement jour faites toujours attention ce que les commentaires soient utiles et coh rents 8 Relisez vous plusieurs fois Cela permet de ne rien oublier d ajouter des pr cisions et de nettoyer les commen taires pour les rendre clairs et jour 9 Soyez syst matique Commentez toutes vos classes et fonctions Il peut tre galement judicieux de com menter succinctement toutes vos boucles conditions et parties complexes Cela permet au relecteur de suivre facilement les algorithmes lors de la relecture EH Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE 10 Pensez l environnement humain Employez une langue que tout le monde comprend l anglais le fran ais oubliez pas le tag author de mani re ce que le lecteur ait tout moment une personne qui s adresser en cas de blocage Exemple de code comment x Gestion de la table des pages G re tous les acc s en lecture et en criture la table des pages dans la base
151. page suivante gt http www php net manual fr language exceptions php L utilisation des exceptions est utile pour une gestion avanc e des erreurs Elles faci litent la gestion des comportements impr vus de l algorithme ainsi que la mainte nance Lorsqu une erreur intervient dans un bloc try il suffit d ajouter un bloc catch adapt pour traiter la nouvelle exception Vous pouvez pr voir dans votre architecture d avoir vos propres exceptions C est une mani re l gante de d finir le comportement de votre application en cas d erreurs RETENIR Lever une exception en dehors du bloc try Il est possible de d clarer la lev e d une exception dans une fonction Dans ce cas l appel de la fonction doit se faire dans un bloc try m me si c est travers d autres fonctions Une autre solution consiste d clarer une fonction qui traitera toutes les lev es d exceptions par l inter m diaire de la fonction set_exception_handler Dans ce cas il n y a pas besoin des blocs try catch Voici maintenant un autre avantage des exceptions lorsqu une erreur est trouv e il est possible d afficher ou de oguer la pile des fichiers et des fonctions travers les quels l erreur est survenue Cela permet de mieux cerner l origine de l erreur Dans la trace suivante une exception est lev e dans la fonction first On voit bien que cette fonction est appel e par second est que second est lui m me appel dan
152. param tres sp cifi ques de configuration PHP qui ne concernent pas les autres comme les r pertoires d include par d faut par exemple Ces param tres peuvent tre inscrits dans la configuration d un serveur HTTP comme Apache dans l environnement d un h te virtuel L exemple suivant propose une solution de param trage li e la proc dure d crite plus haut Un h te virtuel qui d finit des options PHP sp cifiques WWW OPENSTATES ORG PHP 5 Application Owner openteam Content path web openstates org local lt VirtualHost 80 gt ServerName local openstates org ServerAdmin webmaster local openstates org DocumentRoot web openstates org local lt Directory web openstates org local gt Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow deny Allow from all lt Directory gt php_value include path web openstates org local includes UseCanonicalName On DirectoryIndex index ops index php SetEnv OPS_BASE web openstates org local ErrorLog logs local openstates org error_1log CustomLog logs local openstates org access_log combined lt VirtualHost gt La configuration du syst me d exploitation Il est g n ralement pr f rable d avoir le m me syst me d exploitation en d veloppe ment en recette et en production de mani re ce que les environnements soient similaires En revanche si vous souhaitez que vos applications soient portables effectuer des tes
153. peut tre li e plusieurs vols mais un vol ne peut tre li qu une destination c est le r le des cardinalit s 0 1 li es aux relations de la figure 7 4 MySQL MySQL est un SGBD depuis longtemps associ PHP On g n ralise m me de temps en temps en parlant d applications PHP MySQL Cependant MySQL est un projet ind pendant Il est le moteur de base de donn es Open Source le plus populaire du monde avec plus de 5 millions d installations actives et de nombreux utilisateurs prestigieux dans le monde professionnel Caract ristiques de MySQL Le projet MySQL est n d un d sir de disposer d un SGBD performant Dans ses premi res versions les d veloppeurs ont privil gi cette caract ristique sur la diver sit des fonctionnalit s La version 3 de MySQL ne fait pas de contr le d int grit Choisir les ressources et les supports de donn es CHAPITRE 7 n accepte pas les requ tes complexes imbriqu es ne permet pas la mise en place de vues triggers ou proc dures stock es Cela volue progressivement avec MySQL versions 4 et 5 Tout en maintenant des performances optimales MySQL s quipe De nombreuses interfaces d administration sont disponibles pour MySQL dont le fameux PhpMyAdmin et la nouvelle interface d administration graphique livr e avec le SGBD qui s av re tr s pratique Pourquoi choisir MySQL MySQL est performant et contrairement certaines rumeurs
154. placement n est pas possible autrement qu en supprimant le fichier puis en l ajoutant au nouvel emplacement Le fichier d plac est alors import en totalit dans le d p t et il perd toutes les informa tions relatives ses versions pr c dentes Subversion propose un m canisme qui maintient la version du fichier d plac ou dont le nom a t modifi Ne valider que du code sans erreur Si vous voulez faire un g teau sachez qu il y a deux mani res de casser des ufs La premi re la plus courante consiste s parer le contenu de la coquille afin de ne r cup rer que le blanc et le jaune La deuxi me beaucoup plus directe consiste mettre tous les ufs dans le saladier puis les craser avec leur coquille mais ensuite il faut ramasser les morceaux tr s d licatement et c est plus long Un d p t de donn es n a pas vocation recevoir des coquilles Il pr f re les versions stables et test es de vos fichiers S obstiner valider des fichiers contenant des erreurs grossi res parse error etc c est s exposer une s rie de probl mes dont voici quelques exemples e Les retours en arri re sont cens s r parer des erreurs ils g n reront au contraire de nouveaux probl mes En effet si vous navez pas respect la r gle ne validez que du code sans erreur il y a des chances que vos retours en arri re se fassent sur des versions bogu es de votre application e Les mises jour de
155. pondant aux questions pr c dentes Pour nos exemples nous nous baserons sur la mod lisation d une appli cation de gestion d un environnement d ex cution que nous baptiserons UNANYM Mod lisation en UML pour PHP EXEMPLE PRATIQUE Expression des besoins DEUXI ME PARTIE 1 L application UNANYM servira g rer simplement et efficacement un environne ment d ex cution complet pour des applications PHP Elle doit pouvoir g rer le pac kaging et l installation des applications ainsi que le monitoring et la gestion du sys t me 2 Cette application s adresse essentiellement aux personnes charg es de l exploita tion d une ou plusieurs application s PHP ainsi qu aux d veloppeurs 3 Elle permettra d automatiser les processus d installation activation et d sactiva tion d applications de simplifier la configuration de l environnement et de mainte nir un niveau de s curit et de fiabilit optimal 4 L administrateur syst me utilisera la quasi totalit des fonctionnalit s configura tion monitoring gestion des applications sur l environnement d ex cution Les d veloppeurs pourront packager leurs applications les v rifier et r gler les probl mes survenus sur l environnement d ex cution renvoy s par UNANYM Exigences et contraintes Commen ons par d crire le fonctionnement essentiel de notre application en tenant compte de notre analyse initiale des besoins et des exigences contraintes que nou
156. pour Microsoft Windows tr s int ressants Les outils commerciaux comme Oracle et DB2 poss dent galement un panel complet d outils que vous pouvez consulter dans leurs offres respectives Et comme il est simple et rapide en PHP de monter des applications d dition il existe galement une multitude d diteurs de bases de donn es parmi lesquels PhpMyAdmin Un diteur connu pour MySQL qui permet de faire quasiment tout cr ation et modification de bases tables index gestion des droits g n ration de code extrac tion de donn es et diverses op rations utiles PhpMyAdmin gt http www phpmyadmin net Quelques concurrents eSKUeL PHP MySQL Administrator MySQL Query Browser abeille non PHP MySQL Front client lourd Organisation du projet conventions et outils PREMI RE PARTIE localhost gt localhost eyrolles book php iyAdmin Mozilla Firefos Figure 6 3 Eile Edit View Go Bookmarks Tools Help L diteur PhpMyAdmin 5 g A http localhost pma zj O Go G Sorwr gflocalhest p Database Geyrolles Table gy book Sma M Browse SAL Z Search S insert M Export Operations 1 Empty Drop phpMyAdmin Field Type Collation Attributes Null Default Extra Action F bookid init No 0 XRBmEr angg D estegory it im 11 No 0 PA Re Database M booktitle varchar 127 utf_unicode_ci No YEBTM eyrolles 1 z C msme tet utB_umicode_ci No
157. pour l exploitation QUATRI ME PARTIE Contenu du fichier my_configure cr er l bin sh Options d optimisation pour la compilation export CC gcc export CFLAGS 02 Configuration des sources pour l environnement configure prefix usr local enable dav enable rewrite enable so enable proxy enable proxy http enable cache enable mem cache Enfin derni re tape nous pouvons passer la pr compilation Lancement de l ex cutable configure chmod 700 my_configure my_configure Si cette op ration choue un message s affiche vous indiquant ce qui manque pour continuer G n ralement il s agit de ressources qui ne sont pas disponibles Vous devez alors les installer avec votre gestionnaire de paquetages ou en les compilant galement Choisissez les paquetages dont le nom contient devel ou headers ce sont eux qui sont n cessaires la compilation d Apache Si cette tape ne g n re pas de message d erreur nous pouvons passer la suite Compilation et installation Cette tape est simple Elle se r sume la saisie des commandes suivantes Commandes de compilation et d installation make make install La commande make compile Apache Elle peut renvoyer plus ou moins d informa tions en fonction du compilateur que vous utilisez par d faut L environnement d ex cution EC CHAPITRE 15 Si cette commande se traduit par un chec et
158. pour la conception d applications PHP REA CHAPITRE 2 Exemple de code au format K amp R function displayTable table null if Gs_array table print_r table return true return false RETENIR Cas des templates Selon son inventeur Rasmus Lerdorf PHP est lui m me un moteur de templates En r crire un par des sus c est dans la plupart des cas r inventer la roue Si suite la lecture du chapitre 13 vous choisissez de maintenir PHP comme moteur de templates pour votre application rien ne vous emp che de d finir un style d criture diff rent du style de codage traditionnel mieux adapt l criture d un template conte nant beaucoup d informations non PHP L exemple suivant utilise une syntaxe alternative qui rend plus explicite la nature des fins de blocs par des mots cl s endif endwhi le endfor endswitch au lieu de la traditionnelle accolade fer mante Ceci est pratique lorsque les instructions PHP peu nombreuses sont m l es un contenu HTML ou PDF dense lt p gt Ci joint la liste des ouvrages PHP Eyrolles lt p gt lt ul gt lt php foreach books AS book gt lt li gt lt php echo book gt get_name gt lt li gt lt php endforeach gt lt ul gt Erreurs courantes Le choix de certaines syntaxes peut induire des erreurs que m me les d veloppeurs les plus exp riment s reproduisent Lorsque vous laborez des conventions syntaxi ques il est j
159. pour obtenir une solution fonctionnelle ET Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE 4 Qu est ce qu un CLASSPATH Un environnement Java dispose de plusieurs variables d environnement dont CLASSPATH qui a un r le similaire la variable PATH d un environnement Unix Cette variable contient une liste de r pertoires o sont stock es les archives auxquelles nous souhaitons acc der Si un programme Java ne fonctionne pas cause d une d pendance il est possible que la variable CLASSPATH de votre environnement soit mal renseign e Faire interagir PHP et C C Une interaction native entre PHP et C C se fait par l interm diaire des exten sions La biblioth que PECL The PHP Extension Community Library contient la plupart des extensions PHP libres existantes gt http pecl php net Le chargement de ces extensions dans PHP fournit un environnement pour les exploiter Cet environnement peut se traduire en constantes fonctions et classes sp cifiques chaque extension Cr ation d une extension en C ou C La cr ation d une extension pour PHP est simple mais requiert de bonnes connais sances en C Il existe pour cela une m thode des ressources et quelques outils Figure 14 3 Environnement de Environnement d ex cution l extension C pour PHP Serveur http ligne de commande SAPI Server Application Programming Interface Couche de liaison avec les en
160. prend galement en con sid ration la sant de tous par le respect des horaires et une limitation des p riodes de pression EJ Organisation du projet conventions et outils PREMI RE PARTIE Une approche effective consiste assumer que chaque acteur dun m me projet poss de des valeurs gales celles des autres et doit par cons quent tre trait avec respect Ressources Pour aller plus loin avec les m thodes agiles Les valeurs pr c dentes sont issues des principes expos s l adresse suivante gt http agilemanifesto org principles html Vous trouverez de plus amples informations sur les m thodes agiles l adresse suivante gt http www agilealliance org L eXtreme Programming XP LeXtreme Programming XP est une discipline de d veloppement bas e sur les 5 valeurs des m thodes agiles et adapt e des projets de taille moyenne d environ 3 10 personnes XP est extr me dans la mesure o les pratiques propos es doivent tre appliqu es jusqu au bout XP s adresse l ensemble des membres dune quipe projet clients y compris RESSOURCES Aller plus loin avec XP Nous nous contenterons dans cet ouvrage de vous donner un aper u de la m thode XP qui sera votre base d exp rimentation Si la m thode vous pla t et que vous souhaitez aller plus loin il existe des ouvra ges sp cialis s reposant sur de nombreuses exp riences pratiques Notre tude d XP est no
161. qui poss de une documentation en ligne com pl te et agr able consulter Un framework pour applications PHP 5 bas sur MVC2 Struts Smarty et XML URL http wwuw xisc com http www rwfphp org http seagull phpkitchen com http www sitellite org http www solarphp com home http www mojavelinux com projects studs http www phpwact org http xaraya com index php docs 85 http www yellowduck be http znf zeronotice com Choisir les ressources et les supports de donn es REX CHAPITRE 7 SAVOIR PEAR est il un framework Le but du projet PEAR est de mettre disposition une biblioth que compl te de composants PHP Sa vocation n est pas d tre un framework part enti re Les r gles d criture et les conventions PEAR ne concernent que les classes PEAR et non les applications qui s en servent Plusieurs frameworks cit s plus haut exploitent les composants PEAR Pour en savoir plus sur PEAR une section lui est consacr e plus loin Vous trouverez galement des infor mations sur le site officiel gt http pear php net Construire son propre framework Le d veloppement d un framework sur mesure est d autant plus abordable que le retour sur investissement est rapide avec PHP La preuve en est la diversit des fra meworks de la section pr c dente Avec d autres technologies plus rigides et difficiles mettre en uvre ce choix serait diff rent Il
162. r cents partenariats entre Zend Technologies et IBM Oracle SAP et de nom breux autres acteurs strat giques du march de l informatique conduisent l efferves cence de nouveaux projets De nouveaux noyaux seront disponibles pour PHP optimis s pour Oracle ou DB2 et accompagn s d environnements d di s inspir s de la Zend Platform Vous trouverez davantage d informations sur le site de Zend Technologies l adresse suivante gt http www zend com store CINQUI ME PARTIE T moignages Au del des aspects th oriques l exp rience est le gage de r ussite le plus s r qui soit Les t moignages propos s dans cette derni re partie mettent en avant des par cours tout aussi instructifs que diff rents les uns des autres 18 T moignages d utilisateurs travers quelques t moignages nous allons d couvrir que malgr la souplesse et les nombreuses possibilit s offertes par la plate forme PHP rigueur et m thode s av rent n cessaires la mise en uvre de projets professionnels Les personnes interrog es sont toutes habitu es travailler avec PHP depuis plu sieurs ann es Il est d autant plus int ressant de pointer du doigt leurs r actions com munes que la diversit de leurs exp riences est marqu e par l adoption de m thodes et d outils diff rents ET T moignages CINQUI ME PARTIE Zeev Suraski directeur technique de Zend Technologies Zend Technologies est la soci t la p
163. r les au sein de l quipe La figure 2 10 illustre les principaux r les d une quipe de projet travers un exemple d organisation que vous pouvez adapter vos besoins Les r les que pren dront chaque personne d pendront du nombre d acteurs et de la m thode de gestion de projets choisie L exemple ci apr s reprend quelques bonnes pratiques issues des m thodes agiles mais ne peut tre consid r comme une d marche d eXtreme Programming La nature du projet est galement importante Dans le cas d un projet d entreprise nous aurons g n ralement une quipe fixe de membres disponibles plein temps sur une p riode donn e Dans le cas d un projet Open Source de m me taille l quipe sera compos e de membres disponibles ponctuellement g ographiquement clat s La figure 2 11 propose une id e d organisation pour un projet Open Source repo sant sur le mod le du PHPGroup Cela peut voluer d un projet l autre et peut par cons quent g n rer des d saccords D finir des conventions pour la conception d applications PHP Figure 2 10 Quelques r les courants d une quipe de projet Tracker D veloppeur Designer CHAPITRE 2 int grateur Chef de projet Chef de service Responsable Testeur technique Client Responsable d exploitation Un des exemples les plus repr sentatifs est celui de la diversit des syst mes Unix et GNU Linux Mais d a
164. rarchie des objets de l extension DOM DOMAttr DOMDocument DOMDocumentType DOMElement L gende utilise DOMNode DOMProcessinginstruction lt gt tend DOMCharacterData DOMENntity DOMEntityReference DOMNotation E DOMText DOMException DOMimplementation DOMComment DOMNodeList DOMXPath Par exemple vous pouvez avec un objet DOMText utiliser les m thodes et les attributs des objets DOMCharacterData et DOMNode puisque DOMText h rite de ces classes XSLT Exploiter les points forts de PHP les m ta structures 261 CHAPITRE 11 RETENR Parcourir un document profond avec DOM utilisez XPATH Lorsque vous devez r cup rer des donn es situ es dans une zone profonde de l arbre XML la navigation travers DOM devient tr s verbeuse D autre part la d claration de nombreux n uds pour arriver ses fins consomme des ressources et du temps La solution l gante permettant de s abstraire de ces difficul t s est l utilisation de XPATH XPATH est pour le document XML ce que SQL est pour la base de donn es un outil de manipulation effi cace conna tre et utiliser chaque fois qu il peut vous rendre service Par exemple compter le nom bre de paragraphes dans un chapitre sans XPATH n cessiterait de naviguer jusqu aux paragraphes compter et effectuer des boucles avec un compteur PHP Avec XPATH une seule ligne suffit pour r cu p rer notre r sultat e
165. ressant de r pliquer des don n es et ou des sources sur plusieurs serveurs Cela permet de mettre en place des syst mes de r partition de charge de clustering ou de sauvegarde Les tests de s curit Ce processus s assure qu il n y a pas d intrusion ou de comportement suspect Il peut effec tuer des tests d int grit sur la base de donn es v rifier si les actions confirm es dans les logs ont bien t effectu es etc Organisation du projet conventions et outils T che Le reporting La maintenance PREMI RE PARTIE Tableau 6 1 T ches automatisables pour l administration d applications PHP suite Description Il consiste remonter de l information Cela peut se traduire en informations consulter sur un Intranet ou li es certaines applications Certains diteurs PHP permettent par exemple de communiquer avec un serveur distant qui leur fournit des informations sur les erreurs d tect es fichier ligne intitul etc Ce script va nettoyer la base de donn es archiver les logs et effectuer un certain nombre d op rations utiles la sant de la plate forme Il existe bien entendu d autres types de t ches non r pertori es dans ce tableau mais nous avons d j parcouru l essentiel Il nous reste voir avec un peu plus de d tails quelques exemples d outils d administration couramment utilis s en PHP ce que nous ferons dans la suite de ce chapitre ADMINISTRATION Surveiller son sys
166. ressources Mal utilis es elles peuvent faire travailler inutilement le processeur ou saturer la m moire Voici quelques bonnes pratiques algorithmiques conna tre Optimiser les ressources du traitement Une liste de produits que l on veut comparer products array HVR Z1 HVX 200 HD100 HDR FX1 Cet algorithme est gourmand en traitement et en consommation de la m moire 296 Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE t_products array foreach products AS product1 foreach products AS product2 if product1 lt product2 t_products product1 vs product2 foreach t_products AS key gt value echo key 1 count t_products echo value lt br gt n Cet algorithme produit le m me r sultat mais il est optimal nb_products int count products nb_compar int nb_products 1 nb_products 2 for i 0 k 1 i lt nb_products i for j i 1 j lt nb_products j k echo k nb_compar echo products i vs products j lt br gt n Les algorithmes pr c dents affichent les diff rents comparatifs que l on peut pro duire avec une liste de produits stock s dans un tableau Ils produisent les sorties suivantes Algorithme 1 non optimis Algorithme 2 optimis 1 6 HVR Z1 vs HVX 200 1 6 HVR Z1 vs HVX 200 2 6 HD100 vs HVR Z1 2 6
167. rest lt format gt lt id gt 3 lt id gt lt titre gt Gr ce les Cyclades lt titre gt lt niveau gt facile lt niveau gt lt duree gt 7 jours et 6 nuits lt duree gt lt escale gt lt type gt Ile lt type gt lt titre gt Syros lt titre gt lt visite gt Les plages lt visite gt lt escale gt lt escale gt lt escale gt lt rsp gt Pour lire ce flux nous pouvons d velopper un client qui contiendra le morceau de code suivant Exemple de client en PHP Param tres rendre dynamiques op menu id 3 R cup ration du flux XML et chargement de l arbre XML url http server restserver php op op amp id id xml simplexml_1oad_file ur1 Appel d un template d affichage include menu tpl php Assurer des d veloppements PHP performants et polyvalents EC CHAPITRE 14 Exemple de template d affichage menu tp1 php simple lt html gt lt head gt lt Affichage du titre de fen tre gt lt title gt lt php echo xml gt titre gt lt title gt lt head gt lt body gt lt titre et introduction gt lt h1 gt lt php echo xml gt id gt lt php echo xml gt titre gt lt h1 gt lt p gt Circuit lt php echo xml gt niveau gt d une dur e de lt php echo xml gt duree gt lt p gt lt contenu des escales du circuit en cours gt lt php foreach xml gt escale AS escale gt lt h3 gt lt php echo escale
168. s rend rapidement compatible avec d autres outils du m me type que l on trouve partout dans le monde EX Mod lisation en UML pour PHP DEUXI ME PARTIE Figure 9 5 Une plate forme volutive tat actuel volutions possibles Mise en place Connexion aux Mise de politiques logiciels de disposition de Base LDAP d acc s messagerie la base client Flux LDAP Syst me Interconnexion avec un autre Annuaire interne d information syst me d information sur l intranet Objets M tier Application 1 D veloppement rapide et Dev d une interface de ly facile d autres applications contr le centralis e Flux SOAP Couche Mise en place d une autre Mise disposition du pr sentation couche pr sentation service l ext rieur Voici quelques liens vers des organismes de normalisation qui proposent de nombreux standards dont on peut user volont W3C gt http www w3 org Oasis gt http www oasis open org 10 Les motifs de conception Design Patterns Les motifs de conception sont des ensembles de solutions et de bonnes pratiques bas es sur la programmation objet Chaque motif r pond une probl matique pr cise travers une solution ing nieuse longuement travaill e par de nombreux sp cialistes Nous allons pr senter les principaux d entre eux Beaucoup de d veloppeurs en informatique ont d j entendu parler de pr s ou de loin des
169. serveurs TECHNIQUE Modifier la configuration de votre d p t de donn es Il est possible de modifier les m tafichiers du d p t directement dans le dossier CVSROOT En revanche CVSROOT est galement un module de votre d p t de donn es Vous pouvez l extraire en utilisant la commande cvs co CVSROOT modifier le contenu des fichiers puis valider les m tafichiers CVS sont ainsi mis jour automatiquement Installer et utiliser un gestionnaire de versions E CHAPITRE 3 Le fichier cvswrappers Il est important de configurer ce fichier d s le d but car cela permet d viter certains probl mes li s aux m thodes de transferts de donn es g r es par CVS Le probl me courant concerne les fichiers binaires CVS consid re par d faut que vos fichiers sont du code source donc des fichiers ASCII Le transfert de fichiers ASCII est plus rapide mais n est pas compatible avec le transfert de donn es binaires Si vous laissez CVS g rer ces derniers images vid os etc comme des fichiers ASCII vos fichiers deviendront inutilisables Contenu du fichier cvswrappers Inscription des extensions des fichiers binaires gif k b jpeg k b jpg k b png k b mp3 k b Fusionner les fichiers PHP plut t que les copier php m MERGE Le fichier cvsignore Il contient des noms et des motifs de fichiers dossiers dont il ne faut pas tenir compte C est dans ce fichier de configuration que vous alle
170. si celui ci est provoqu par un de vos modules commencez par d sactiver le module incrimin dans my_configure r ex cutez my_configure et recommencez en lan ant ventuellement make clean avant le make Vous pourrez ensuite analyser le probl me ou installer votre module dynami quement La commande make install installe ex cutable Apache et les fichiers dont il a besoin configuration et d pendances sur votre syst me l emplacement que vous avez indiqu avec l option prefix dans my_configure Avant le lancement de cette commande aucune op ration n a t faite sur le syst me C est d ailleurs la seule commande que vous soyez souvent oblig d ex cuter avec l utilisateur root sauf si prefix d signe un r pertoire contr l par un utilisateur non root Les autres peuvent tre lanc es avec un autre utilisateur dans la mesure o il a les droits de compilation et d acc s aux ressources utiles pour cette compilation fichiers headers des modules Configuration et lancement d Apache Si vous avez choisi le param trage d crit pr c demment votre fichier httpd conf contenant l ensemble des directives pour la configuration d Apache est l emplace ment suivant dition du fichier httpd conf vi usr local conf httpd conf Une fois que vous avez effectu vos param trages minimaux ServerName etc vous pouvez lancer Apache avec la commande suivante Lancement d Apache usr local bin a
171. sites web tant le principal atout de la plate forme PHP Le tableau ci apr s d taille les r les que l on retrouve g n ralement dans une quipe de projet web Vous pouvez d finir ces r les en vous inspirant plus ou moins de ceux propos s par les m thodes agiles d crits en partie travers XP R le L architecte Le d veloppeur Le chef de projet Le graphiste designer L int grateur Le responsable d exploitation Le responsable technique Le testeur Le tracker Tableau 2 2 R les des membres dune quipe de projet web R le XP Programmeur d veloppeur Programmeur d veloppeur Coach Testeur Tracker Description Il est responsable de la structure du projet dans son ensemble En fonction de ses domaines d expertise il sera soit responsable d une ou plusieurs brique s de l application soit sp cialiste d un domaine particulier intervenant dans une multitude de briques diff rentes Il fait souvent le lien entre les clients et l quipe de projet Ses res ponsabilit s sont multiples la qualit du projet son planning le respect des sp cifications et le suivi des volutions Il s occupe des aspects pr sentation les images maquettes feuilles de styles etc Son travail consiste assembler les travaux d impl mentation aux maquettes graphiques Il d finit galement la navigation du site web Il s occupe de l h bergement et met en place les environnement d ex cut
172. solutions permettent actuellement de faire interagir nativement PHP et Java e une extension Java PHP 4 http php java bridge sourceforge net e le bridge de la Zend Platform http www zend com Assurer des d veloppements PHP performants et polyvalents ET CHAPITRE 14 Le principe de fonctionnement d un pont Java bridge pour PHP est illustr sur la figure 14 2 Figure 14 2 Principe de fonctionnement Serveur du pont Java source d applications Zend platform J2EE Logique M tier W v Objets JAVA Objets JAVA via proxy L exemple suivant fonctionne avec les deux solutions Il fait appel une classe stan dard accessible par d faut dans tout environnement Java Utilisation de ressources Java dans un code PHP Utilisation simple de la classe SimpleDateFormat formatter new Java java text SimpleDateFormat EEEE MMMM dd yyy at h mm ss a zzzz echo formatter gt format new Java java util Date Le r sultat du script pr c dent jeudi avril 28 05 at 11 06 02 PM Heure d t d Europe centrale Toute classe accessible par l interm diaire de la variable d environnement CLASSPATH devrait tre manipulable par cet interm diaire Le pont Java PHP 5 de Zend Tech nologies permet galement d effectuer des appels natifs aux EJB Les ponts Java n cessitent tous un environnement Java pour fonctionner La lecture de la proc dure d installation d un pont Java est souvent n cessaire
173. sont souvent utiles pour vos op rations de d bogage ou tout simplement parce que vous avez besoin dans votre script d une information contenue dans une de ces constantes Assurer la qualit d un d veloppement PHP ET CHAPITRE 12 RETENR Comment le moteur de PHP enregistre t il les variables La structure de donn es permettant de stocker les variables est la m me quel que soit le type Cela garantit PHP une parfaite compatibilit entre les variables quelles que soient leurs caract ristiques Bien entendu lorsqu il y a comparaison entre deux variables de types diff rents des fonctions de comparaison sp cifiques sont appel es de mani re fournir un r sultat Voici la structure de donn es en C qui sert stocker toutes les variables PHP Structure de stockage de la valeur de notre variable typedef union _zvalue_value long Ilval Stockage de la valeur si son type est long boolean ou resource double dval Stockage de la valeur avec le type double struct Stockage de la valeur avec le type string char val Valeur de la cha ne de caract res int len Longueur de la cha ne de caract res str HashTable ht Stockage d un tableau dans une hashtable struct Stockage d un objet zend_class_entry ce HashTable properties obj zvalue_value Informations sur l tat de notre variable struct _zval_struct zvalue_value value R f rence la valeu
174. toute application sous Unix Elle est d pendante de Valgrind et de GraphViz Si KCacheGrind ne fonc tionne pas malgr l installation de ses d pendances une compilation s impose En particulier si le graph ne s affiche pas correctement compilez GraphViz la main R F RENCE KCacheGrind http kcachegrind sourceforge net L interface de KCacheGrind est repr sent e sur la figure 12 10 Elle est compos e de la liste des appels sa gauche que l on peut trier sur tous les champs temps d ex cu tion nombre d appels nom de fonction nom de localisation fichier etc EUR Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Les interfaces de droite contiennent diff rents onglets fournissant un grand nombre d informations autour d un appel s lectionn gauche e la liste des appelants leurs co ts taux de sollicitation distance avec l appel cou rant e la carte des appels carr s de couleurs qui repr sente tous les appels par une sur face plus ou moins grande en fonction du co t de chacun d eux e le code source avec une mise en valeur des lignes qui contiennent des appels e la liste des appels effectu s par l appel courant s il s agit d une fonction utilisateur e l arbre des appels repr sent par un graphe interactif l araign e que l on voit au centre de la figure 12 10 e la carte des appelants sur le m me principe que la carte des a
175. type Q P Prototype I Figure 10 5 m Principe Cloner un prototype Ag aoned clone coge icem O ce Ori Le prototype en PHP En PHP il existe d j une m thode magique __cloneQ qui permet de renvoyer non seulement une copie de l objet courant mais galement une copie modifi e qui peut par exemple incr menter un compteur dans la classe clon e avant de la renvoyer Le singleton Singleton Principe du singleton Un singleton est une classe destin e ne produire qu un objet unique En d autres termes une classe de type singleton ne peut s instancier qu une seule fois R F RENCE Le motif singleton dans la documentation officielle de PHP Un exemple d impl mentation du motif singleton est donn dans la documentation officielle de PHP l adresse ci dessous gt http www php net manual fr language oop5 patterns php 250 Mod lisation en UML pour PHP DEUXI ME PARTIE L utilisation des singletons en PHP est recommand e Ce motif permet d conomiser des ressources en vitant de cr er plusieurs objets identiques alors qu un seul suffit Figure 10 6 UML Principe e puranen 7 Un objet unique __construct getinstance R TENR Travailler avec plusieurs singletons Si vous tes amen avoir plusieurs singletons dans votre code vous pouvez d finir une classe abstraite qui s occupera de centraliser la gestion du motif UML
176. un d veloppeur PHP doit tre ing nieux et cultiv Rien ne remplace une t te bien construite et une bonnes connaissances de l environnement avec lequel on d veloppe En revanche il y a deux particularit s plus sp cifiques PHP Lune d elles est la capacit de ma triser le web chercher du code existant par exemple et tre capable de s en servir pour r pondre aux questions ouvertes PHP contrairement d autre langages poss de une grande communaut de contributeurs et une norme quantit de code source en ligne La seconde est d tre sensible aux probl mes de s curit Quand ils travaillent sur des applications c t serveur les d veloppeurs doivent avoir conscience qu ils sont dans un environnement hostile Il ne doivent pas faire confiance aux utilisateurs finaux et ce dans les moindres d tails L origine de la plupart des probl mes de s curit qui existent ou ont exist dans des applications PHP proviennent de cela Quelles sont les principales erreurs que les d veloppeurs PHP font Comme je lai dit dans ma r ponse pr c dente faire confiance l utilisateur final augmenterait norm ment la liste de ces erreurs Une autre erreur courante gale ment en rapport avec ce que je viens de dire consiste syst matiquement r inventer la roue plut t que de r utiliser le code existant T moignages CINQUI ME PARTIE Pouvez vous nous pr senter Zend Technologies et son r
177. values count 1 debug_error Echec d dition du formulaire debug Requ te filter title return false ES gt Code pr c dent g n r pour la version production lt php require_once prod_reporting php Inclusion du gestionnaire de base LDAP require_once dirname _FILE__ 1dapmanager php Fonction de r cup ration des informations d dition public function edit filter fields dn ou people dc fraternity dc fr if _POST l1dapForm values this gt search dn filter if values count 1 report_error Echec d dition du formulaire return false 4 gt 366 Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Remarque pour des raisons pratiques li es de d bogage il est pr f rable de con server les num ros de lignes entre la version gabarit et les versions g n r es En d autres termes les mots cl s ne sont substitu s que par du contenu qui tient dans la ligne substituer afin de maintenir ces num ros de ligne Interagir avec d autres plates formes La g n ration de code peut s inscrire dans un m canisme d interaction avec d autres plates formes et langages Par exemple un code Java peut g n rer des sources PHP un code PHP peut g n rer des sources Python Perl ou Shell La figure 14 16 illustre un exemple d exploitation de la g n ration de code multi plates formes Figure 14 1
178. var_type_elem amp var_object var_target amp var_source Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE RETENIR Les passages par valeur et par r f rence sont aussi performants qu est ce que cela veut dire Les d veloppeurs de PHP ont beaucoup r fl chi sur la mani re dont la plate forme g re la m moire et les ressources Dans le cas du passage par copie le contenu n est pas dupliqu tout de suite mais seulement lorsqu il y a besoin de la copie en l occur rence lorsqu il y a criture Copie de la cha ne Hello dans la Variable nomm e var1 Le compteur de r f rence de Hello est 1 var1 Hello Assignation de la cha ne Hello la variable nomm e var2 par l interm diaire de vari Le compteur de r f rence de Hello passe 2 var2 varl Copie de la cha ne Bonjour dans la variable nomm e vari vari est d tach e du contenu Hello qui voit son compteur de r f rence d cr ment 1 var1 Bonjour Copie de la cha ne Au revoir dans la variable nomm e var2 Le compteur de r f rence de Hello passe 0 Hello est retir de la m moire var2 Au revoir Remarque la structure C qui repr sente une variable PHP contient un compteur de r f rence refcount dont le r le est de g rer la pr sence des donn es dans la m moire Vous trouvere
179. veloppements PHP performants et polyvalents REX CHAPITRE 14 tion d objets qui s embo tent les uns dans les autres peut faire appel un m ca nisme de traduction tel que celui que nous avons vu pr c demment e La g n ration de code partir des tests est une solution pour ceux qui adoptent la politique du code pilot par les tests Un parseur analyse le jeu de tests et cons truit le squelette du code utile partir de ces informations Figure 14 17 L nr D Cr ation automatique Cr ation assist e Pilotage par les tests Strat gies de g n ration avec les tests unitaires Application Application Jeux de tests Y Y Y lett Jeux de tests zekacie ssy i Sar pmo jeux de tests d application Quoi qu il en soit la g n ration de tests ou de code par les tests reste une op ration difficile qui n cessite ing niosit et discipline Vous trouverez plus loin des r f rences de sites et d ouvrages sp cialis s dans la g n ration de code et qui abordent la g n ra tion de tests unitaires avec davantage de d tails G n ration de couches d acc s la base de donn es Cette discipline consiste cr er du code d interfa age entre une base de donn es et PHP On peut partir d une requ te SQL g n rer le code PHP qui permet de la manipuler ou bien partir de la d finition d une base de donn es g n rer le code PHP qui y acc dera Des applications comme
180. versions 65 La gestion des versions en PHP 66 Utilit d un gestionnaire de versions 66 Principe de fonctionnement eines DS es nt CA NE PAPE CA 66 Exemple de stenar RS SSSR Er RSR RIT AR De 66 Versions de fichiers et versions d applications 68 Oxi Best Practices PHP R gles de bonne conduite 69 Un d p t ne supprime rien 41 44e Re tes ns ns 69 Mais pourquoi un d p t ne supprime rien 69 Ne valider que du code sans erreur 4 4er more 70 Tester avant de figer une version ue acer etude assaalaalen 70 viter les renommages et les d placements en masse 71 Chacun SON c mpte sary ane re cine tt 72 Quand et pourquoi cr er une branche 251 205 Se nn users 72 Subversion SVN 74 Apports de Subversion par rapport CVS 74 SRI RS En es de ne Me et io ie Sao NAT 75 Cr ation d un d p t de donn es nu da ep een 76 Configuration pour PHP avec Apache WebDAV _ 76 Impottdedonn es orii iai La A E men sn nan sea ie am 2 78 Op rations de b se re sn esse re RTE RP SERRE 78 Chents graphiques nises leon ste di does de aie re SO GAS 78 Concurrent Version System CVS 79 Tastalliton RE eieren s aa e a a e a a a a
181. vhosts conf Dans l automate de la figure 4 5 un ex cutable do_http_conf g n re les h tes vir tuels li s chaque site Les param tres de ces h tes sont d termin s en fonction de l emplacement URL et du contenu autres param tres de fichiers sp ciaux vhost php dispos s la racine de chaque application Voici un exemple de ce que peut contenir le fichier vhost php dans un r pertoire web openstates org local Fichier vhost php lt php header HTTP 1 0 404 Not Found PHP5 php_value include_path web openstates org local includes UseCanonicalName On DirectoryIndex index ops index php SetEnv OPS_BASE web openstates org local gt La routine correspondante devra traiter les informations situ es entre et PHP5 indique la routine que l application est compatible PHP 5 et le reste des lignes doit tre copi tel quel dans l h te virtuel de l application Mettre en place l environnement d ex cution pour le d veloppement RES CHAPITRE 4 RESSOURCES T l charger cette routine sur Internet Vous trouverez l adresse suivante le code source de la routine correspondant notre exemple ainsi que de nombreux autres outils utiles Il est galement possible de proposer ses propres outils et de les rendre visibles sur de nombreux sites qui traitent de PHP http www openstates org php D autre part il se peut que certaines applications requi rent des
182. votre intranet Voici une liste compl ter d outils utiles que nous pouvons trouver dans un intranet e la liste des projets avec pour chacun d eux un acc s dans les diff rents environne ments et des liens vers les proc dures et les informations qui les concernent e les outils de collaboration comprenant agenda annuaire forum biblioth que de liens messagerie instantan e et base de connaissances e un outil de monitoring des applications qui lance r guli rement les tests de recette et des sc narios de navigation e un outil de reporting qui r cup re les logs d erreur les analyse et les expose de mani re ce que les d veloppeurs aient toute l information n cessaire au d bogage e des gestionnaires de donn es tels que PhpMyAdmin pour MySQL PhpLDAPAdmin pour LDAP etc e un gestionnaire de t ches int grant galement le tracking de bogues Organisation du projet conventions et outils PREMI RE PARTIE e des frontaux de proc dures permettant de g rer les mises en recette et en production le passage des scripts et tout ce qui demande Paval de l administrateur syst me e un gestionnaire d utilisateurs permettant de d finir les statuts les droits d acc s et diverses informations sur chaque personne ayant acc s l intranet Figure 4 9 Mes Groupes Utilisateurs Groupes Modules Cr er un module Exemple d interface Co c L
183. y a plusieurs avantages cr er son propre framework parmi lesquels e la possibilit de ma triser compl tement les rouages des briques logicielles qui supportent vos applications e l absence de code superflu et la ma trise totale des fonctionnalit s et des perfor mances e la possibilit de mettre en place ses propres r gles et conventions B tir un framework est un projet part enti re Ce d veloppement pourra tre r alis avec les m thodes et les outils de vos choix Il faudra garder l esprit les objectifs que vous voulez atteindre avec votre framework Pour cela une petite tude initiale s impose Figure 7 3 Eaire Construire son framework LLC Applications Mon framework d veloppement hi Composants Fixe des Fournit des r utilisables conventions ressources L INES _ donn es R partit les t ches Fixe l architecture 7 Outils de maintenance Outils de _ o d veloppement Organisation du projet conventions et outils PREMI RE PARTIE Si vous avez d j un bon historique de d veloppements PHP et que vous souhaitez construire un framework pour accompagner votre activit il vous sera facile de cerner vos besoins et de dresser la liste des r les importants que vous attribuerez au fra mework En revanche si le d veloppement du framework doit se faire en parall le un ou plusieurs projets une analyse plus ou moins pouss e pourra tre envisag e en fonc tion de
184. 00 des parties sensibles Soyez toujours s rs de parfaitement ma triser le code qui touche la s curit de vos d veloppements et si besoin d veloppez cette partie vous m me De nombreux scripts crits par des amateurs se vantent de renforcer la s curit mais ne font en r alit qu augmenter l instabilit d une application La faille la plus courante en PHP consiste permettre aux visiteurs d ex cuter leur propre code PHP tra vers un trou de s curit attaque par injection Cette faille permet de prendre le contr le de la machine avec les droits de l utilisateur utilis par le serveur HTTP dans un premier temps L erreur la plus grossi re est de ce type il existe des variantes plus subtiles lt php Hackez moi bien fort include _GET file 2 gt Note concernant les licences Avant d utiliser une ressource il est important de consulter la licence laquelle elle est attach e afin de savoir jusqu o vous pouvez aller et dans quelles conditions vous avez le droit d exploiter la ressource La plupart des d veloppements PHP sont soumis la licence GPL GNU General Public Licence ou une licence compatible qui autorise l utilisation la distribution des applications tout le monde et permet la modification du code source sous con ditions gt http www gnu org copyleft gpl html D autres licences sont utilis es telles que la licence BSD d clin e en deux version
185. 005 10 years since PHP 1 0 was released Forum AFUP 2005 Call for Papers CFP PHP Track AUUG Annual Conference PHP West Security Conference in Vancouver BC PHP Applications gathering PHP 5 0 4 and 4 3 11 Released International PHP Conference 2005 Spring Edition PHP Qu bec 2005 PHP MySQL Apache PHP amp amp PEAR at FOSDEM 2005 php symphony ApacheCon Europe 2005 PHP Security Consortium O Reilly Open Source Convention 2005 Third Hungarian PHP Conference phpltropics PHP awarded Programming Language of 2004 CHAPITRE 10 Mod lisation en UML pour PHP DEUXI ME PARTIE Le m diateur Mediator Principe du m diateur Plusieurs objets ConcreteColleague issus d un mod le Col Teague sont attach s un objet ConcreteMediator issu d un mod le Mediator Les objets ConcreteMediator d finissent la politique de communication entre les objets Colleague Mise en pratique On utilisera le m diateur par exemple dans une application GTK Un formulaire est compos de nombreux champs textes boutons listes etc qui interagissent entre eux Par exemple la saisie d un champ texte peut activer un bouton ou faire appa ra tre une liste d roulante Le motif m diateur Mediator Figure 10 16 UML Principe Texte Bouton CColleague CColleague Liste Texte2 CColleague CColleague Bouton CColleague Texte CColleague Texte2 CColleague Liste CColleague Medi
186. 1 2 Liste des fonctions de tableau class es par cat gories TROISI ME PARTIE FONCTIONS PHP POUR MANIPULER DES TABLEAUX FONCTIONS DE FILTRAGE ET DE NETTOYAGE array_ filter array reduce array_unique FONCTIONS DE MANIPULATION DES CL S ET DES VALEURS array_change key case array map array_walk array walk recursive array _flip FONCTIONS DE COMPARAISON array_diff_ assoc array diff key array _ diff uassoc array diff ukey array diff array intersect assoc array_intersect key array_intersect_uassoc array_intersect_ ukey array intersect array udiff assoc array udiff uassoc array _udiff array uintersect assoc array _uintersect_uassoc array_uintersect FONCTIONS DE TRI arsort asort krsort ksort natcasesort natsort rsort shuffle sort uasort uksort usort array multisort array reverse FONCTIONS DE MANIPULATION DE PILES FILES LISTES array pop array push array shift array _unshift current end next pos prev reset FONCTIONS DE CR ATION DE TABLEAU array _combine array compact explode file list range FONCTIONS D EXTRACTION array chunk array keys array rand array _ search array_slice array _ values each extract RENVOI D INFORMATIONS array _ count values array key exists array _sum count in_array key sizeof OP RATIONS DE TABLEAU TABLEAU array _ merge array merge recursive FONCTIONS D AJOUT EN MASSE array _ fill array p
187. 10 Un l ment de contenu class ContentIitem private title private fparagraph public function __construct title paragraph this gt title title this gt paragraph paragraph public function getTitle return this gt title public function getParagraph return this gt paragraph Le contenu d une page class Content public function __set item_ id Contentltem item this gt item_ id item public function getltems return array this La classe abstraite page qui sert de mod le abstract class Page protected content public function __construct Content content this gt content content EH Mod lisation en UML pour PHP DEUXI ME PARTIE Le gestionnaire de page HTML class HTMLPage extends Page public function getContent items this gt content gt getItems ret_val foreach items AS item ret_val lt h1 gt item gt getTitle lt h1 gt ret_val lt p gt item gt getParagraphO lt p gt return ret_val Le gestionnaire de page XML class XMLPage extends Page public function getContent items this gt content gt getItems ret_val lt content gt foreach items AS item ret_val lt t gt item gt getTitle lt t gt ret_val lt p gt item gt getParagraphO lt p gt ret_val lt content gt return ret_val
188. 110 Lorsqu une m thode est sollicit e et qu elle n existe pas dans l objet ca110 est appel e sa place L exemple suivant met en uvre un objet travers lequel nous pouvons appeler des fonctions d clar es dans des fichiers s par s Une fonction stock e dans functions sayHello php lt php function sayHello firstname lastname echo Hello ucfirst firstname lastname lt br gt return true gt 208 Mod lisation en UML pour PHP DEUXI ME PARTIE La classe Cal1Factory qui appelle les fonctions situ es dans functions lt php class CallFactory const FUNCDIR functions Fait appel la fonction correspondante dans self FUNCDIR ou renvoie false si la fonction n existe pas public function __call function attrs if lfunction_exists function funcpath self FUNCDIR function php if file exists funcpath return false require_once funcpath return call_user_func_array function attrs functions new CallFactory functions gt sayHello Matthieu Mary functions gt sayHello Guillaume Pon on gt L ex cution du script pr c dent renvoie la cha ne Hello Matthieu Mary lt br gt Hello Guillaume Pon on lt br gt Les m thodes magiques e Les m thodes __sleep et __wakeupO sont appel es la s rialisation et la d s rialisation d un objet e La m thode __toStringO d finit la
189. 1179 1Mphp idap_ search FT 1175F 11104 15Midap_get n0032 7 203 1MNAP gt open CI 072027 072 2Wphp stat F1381F 11379 1Minciude once wet 71117E 27 250 1Hinclude wcb gpn E 85727 230 1MAUTOCOMPILE gt ru EO 7628 762 1 Mphp idap_bina inci Seit Distance Calling Callee E CI 584027 584 1Mphp ldap_gct_ ent 236 050 088 1 1 Blidap_exec CO sso 550 3Mpnp ereg_replace 2351607 0 99 2 1LDAP gt scarch C 364027 044 1MLDA gt close 234 1707 287 3 1 Mi DAP gt rsearch CO 32022 320 1 Miphp idap_close 13818 13 79 1 1include once web gpn prj EI 30027 169 1Widap encode ED 79E 1 79 4 1 Wphp idap_search CO 10C 108 2Mphp str replace 21175 11 04 1 15Midap gct ED 1702 250 1 1 Binciude web gpn prifrater RE pe i u Cais CalGraph ancans CallerMap Assembler PS Types Callers Al Callers CallMap Source fcachegrina out 1421534799 1 Total Time Cost 94 830 EU Organisation du projet conventions et outils PREMI RE PARTIE PROGRAMMATION Qu est ce que le profiling Les outils de d bogage peuvent galement faire du profiling Le profiling ou le tra age consiste effec tuer un enregistrement d une succession d actions afin de pouvoir tudier leurs comportements Par exemple tracer une requ te utilisateur consiste voir quels fichiers classes et fonctions sont sollicit s par l algorithme qui a t d roul Quelques c
190. 4 d une classe 264 surcharge 206 prot g acc s d une classe 264 protocole LDAP 175 sp cifique administration 141 prototype de m thode 272 motif 229 proxy cache 237 HTTP 415 motif 237 public acc s d une classe 264 PWS 386 Q qualit s pour tre un bon d veloppeur par G rald Cro s 444 par Matthieu Mary 452 par Zeev Suraski 441 R rapport d incident 416 Rational Rose IBM 200 r cursivit 290 exemple 290 ma trise 290 red finition du projet XP 38 refactoring d finition 328 et motifs de conception 331 exemples 331 motifs 329 niveaux 330 planification 329 types 330 refcount 288 299 r f rence compteur de 288 passage par 287 r flexion 209 API de 276 exemple 246 r gles de nommage 58 relais ouvert s curit 412 relation d h ritage 191 type de mod lisation 191 remaniement refactoring 328 XP 36 r partition de charge 21 Zend Platorm 432 requ te de cr ation BD 170 exemple 171 temps d ex cution maximum 390 require utilisation de la m moire 286 vs include 287 require_once 287 r seau surveillance 420 respect m thodes agiles 34 responsabilit s dans l quipe 48 responsable d exploitation 48 technique 48 ressource choix 160 extension biblioth que 27 PHP 160 utilisation 291 REST Representational State Transfer 357 exemple pratique 358 pr sentation 357 principe 357 retour chariot Windows 395 reverse engineering 209 r vision d finit
191. 477 r Internet Une utilisation pasanan type des services web Op rateur Agence Base de produits Op rateur Base de produits en ligne Clients Fournisseurs Op rateur Produits en ligne Base de produits SEE SE Ainsi les changes B2B entre les diff rents acteurs d un m me march se trouvent facilit s quelles que soient les technologies utilis es par chacun d eux en interne Les applications bas es sur des architectures de services web sont dites SOA Service Oriented Architecture Il existe bien entendu beaucoup d autres fonctions utiles des services web Ils peuvent intervenir entre la logique m tier et la couche pr sentation d une m me application proposer des services d acc s n importe quelle information et convenir tout besoin d interop rabilit 354 Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Nous allons maintenant nous int resser aux alternatives techniques des services web et aux outils qui permettent de faciliter leur utilisation en PHP Choisir une solution d interop rabilit Trois solutions d interop rabilit par services web sont propos es par PHP SOAP REST et XML RPC Voici en r sum leurs caract ristiques e SOAP Service Oriented Access Protocol est la solution la plus verbeuse mais aussi la plus compl te Elle constitue un v ritable standard
192. 5 Mise en cache m moire des opcodes et des donn es 376 Mise en pratique avec APG ET A MR Sade Er Re a es 376 QUATRI ME PARTIE D finition des exigences pour l exploitation 379 CHAPITRE 15 L environnement d ex cution mmmmrmmerernnrnnnnnes 381 S adapter aux caract ristiques de l environnement d ex cution 382 Ma triser les caract ristiques de l environnement 382 Le s rveur ARER Srana ai nt nn De LE ess re nn den en 383 Les variables d environnement 383 Les modules et options du serveur sels ns sms era ares 383 Le serveur ef sa version 384 La configuration du serveur de EEE ARNO E E PRENS 386 Ea plate forme PHP es Noa nt nn dti 387 Laversion de PHP 88 ss dont M nes a nee dunes 388 PHP et ses modules 388 C nfig ration de PHP SES EAN TS RSR N RARE 389 Utilisation de PHP avec un optimiseur nee das PS OSEO 392 Installations et mises Tous ons diner errer 392 Proc dures d finies avec l administrateur syst me 392 XXIV Best Practices PHP Packaging des applications n SN uote dot Attente L na 393 Automatismes mis en place Lu En D inner nan hr nn 394 Caract ristiques exploitation sens nt ne en 394 Le syst me d exploitation 4 440 44444 hu Eee sauts 395 L environnement applicatif du syst me d e
193. 6 A re 7 Outil de Gabarit Exemple d application PaaS R G n ration gt g n ration m d administration de g n ration gonis mouen PHP aam PERL multi plates formes tn smarty 0000006 G n ration de plugins d administration PERL Extranet PERL EEHEEHE lt Dans lexemple de la figure 14 16 une application de logique m tier en Java utilise le moteur Velocity http jakarta apache org velocity pour g n rer des classes PHP repr sentant les objets m tier manipuler via lextranet Ces objets m tier sont lus par un outil de g n ration PHP qui produit son tour le code Perl n cessaire la mise jour de l intranet par l interm diaire de gabarits templates Smarty Exemples et id es de g n rateurs PHP G n rer des tests unitaires Parmi les multiples applications de la g n ration de code citons la gestion des tests unitaires L id e ici est de mettre en place un m canisme permettant de s abstraire des t ches r p titives Cette g n ration comporte deux avantages elle fait gagner du temps et on s assure que l on n a rien oubli e La g n ration partielle de tests consiste parser un code source PHP et cr er un squelette de jeu de tests qui devra tre compl t par la suite e La g n ration compl te de tests consiste galement parser un code source PHP et g n rer le jeu complet La g n ration de tests complexes n cessitant la cr a Assurer des d
194. 7 des d veloppeurs PHP par G rald Cro s 445 par Zeev Suraski 441 handler 302 lien qui ouvre l diteur 302 traitement automatique 302 error_reporting 302 tat motif 244 trang re cl MPD 170 exception exemple de trace 301 exploitation 300 lever 300 trace 300 exif format 142 exigences mod lisation 185 existant adaptation 219 expression des besoins 183 184 r guli re 293 bons trucs savoir 293 optimisation 293 PCRE 293 POSIX 293 quand les utiliser 293 ext_skel 350 EEA extension 150 autonome 150 347 bridge 150 cr ation 346 d finition 28 150 environnement 346 exemple de cr ation 347 ext_skel pecl_gen 350 pourquoi en d velopper 151 ressources 347 sablotron 262 types 150 XSLT 262 eXtreme Programming 34 client 38 sur site 38 conception adaptive 39 cycles 38 d veloppeurs 38 frequent releases 39 limites du travail en quipe 37 livraisons fr quentes 39 m taphores 36 on site customer 38 organisation d une quipe 34 planification it rative 39 planning game 39 pratiques de programmation 35 r les et responsabilit s 34 rythme durable 39 optimal 38 simplicit 35 sustainable pace 39 travail d quipe 36 en bin me 37 whole team 38 fabFORCE 172 fabrique abstraite motif 227 motif 223 460 Best Practices PHP fa ade motif 236 facilit et simplicit 33 36 factory method motif 222 faille d un programme s curit 411 exploitation 411 Fas
195. BAcceloreton Seann i Haccslerated f Compression blacklist EE httpi masterflow ath cx G horde File Name Lifetime Conditions EC j2sdk E O 125641 4 2 07 ME yearphp TE mostertiow F B mock pte amp O bin DO re F E sidebar php 360 ALLGET amp A iib I E searchohp B e O net CE print php Fo re C accueil I E month_bottom php 360 ALLGET T Men D E month php O functions E imoges F E index php C languages I E header inc ohp D O rss Le I H footer inc ohp 2 1 styles M O annuaire I E event php T O Base de donnee EF G doy php al Une am lioration du confort de d veloppement La Zend Platform interagit avec l diteur Zend Studio pour faciliter la correction des bogues Cette fonctionnalit s av re tr s utile pour accompagner les tests de recette voir m thodes agiles au chapitre 2 et pour corriger des bogues en production Figure 17 4 Interaction entre Zend Studio et Zend Platform D bogueur Zend Platform se ses Erreur la GZ ligne 23 1 Idap php a Internet r seau Environnement de local d veloppement N ud Principal Li N ud 3 N ud4 Environnement de production D finition des exigences pour l exploitation Figure 17 5 Interactions de la Zend Le navigateur Platform avec Zend Studio source Zend QUATRI ME PARTIE Les tapes de recherche de la cause du probl me dans le code source sont consid ra blement
196. E Nommage des versions Nous nous baserons sur les recommandations du projet PEAR pour nos exemples Mais il est galement possible de d finir ses propres noms de versions Nous allons surtout nous int resser la mani re dont il faut g rer les versions dans le cadre du d veloppement d une application PHP Une version est g n ralement compos e de trois indicatifs num riques 1 La version de l application Cet indicatif est incr ment uniquement lorsqu un changement majeur a t r alis impactant une tr s grande partie voir la totalit du code source 2 La r vision est incr ment e lorsque de nouvelles fonctionnalit s ou une s rie de bogues ont t trait s 3 L indicatif de maintenance ne concerne que les rectificatifs appliqu s la r vision en cours Ils ne font pas l objet de nouvelles fonctionnalit s Sur l exemple de la figure 2 16 nous avons pris un premier clich RELEASE_1_0_0 de notre application Ce clich signifie que version 1 r vision 0 sans op ration de maintenance Figure 2 17 Nommage des versions RELEASE_2 0 1 RELEASE_2_1 0 RC1 RELEASE 2 AINT_2_0_0 MAINT_2_0_0_BP RELEASE_2_0_0 merge RELEASE 2 0_0 RELEASE_2_ 0 _0_RC1 QA_2 0 0 RELEASE_1_1_0 Branches QA_2 0 0 BPA x _ RELEASE_1_0_0 TAGs clich s Commit initial Le tag QA_2_0_O0_BP sert indiquer un point de d rivation sur la future version 2 0 0 Ce tag n est pas un clich
197. E 18 T moignages d utilisateurs 439 Zeev Suraski directeur technique de Zend Technologies 440 Pouvez vous VOUS presenter En sa gia p or re AE R O past 440 Pouvez vous nous expliquer en deux mots votre parcours avec PHP 440 Quels sont selon vous les trois avantages qu ont les professionnels a uruiser PHP ss eee mens E no du td este ein 440 Quels sont au contraire les trois points faibles que PHP devrait am liorer 441 Quelles sont selon vous les qualit s requises pour tre un bon d veloppeur PHAR ER D M RNA nr Re ter 441 Quelles sont les principales erreurs que les d veloppeurs PHP font 441 Pouvez vous nous pr senter Zend Technologies et son r le vis vis de l entr e de PHP dans le monde professionnel 442 G rald Cro s consultant chez Aston 443 PORTER OO CONS pr senter E nn en On nb TES 443 Quel a t votre parcours avec PHP Lane trans 443 Pouvez vous nous d crire le projet de framework Copix dont vous tes l auteur 443 Quels sont selon vous les trois avantages de PHP pour les professionnels 444 Quels sont l inverse les trois points faibles que PHP devrait am liorer 444 uelles sont selon vous les qualit s requises pour faire du bon travail en PHP 444 q qunses p Et quelles sont les principales erreurs que font les d veloppeurs
198. EA 3 Qui d veloppe PHP is a fran int US RE s 4 Politique d volution seais hs ee nn Nada de nt 5 Pourquoi PHP est il libre ses et en tn ne net ete dard 6 Quels sont les apports de PHP en termes de productivit 6 NP NES RE RE ER TR OE A SE ee 6 Sa similitude avec d autres plates formes populaires C Java 6 Son adaptation aux d butants es A RE RE RON RS A AR 6 MASON NE SAS DS D COR PR A ES 7 Quelles sont les garanties d utilisation de PHP 7 qui dois je m adresser en cas de probl me 7 Le parc urs d PHP Se Led nee A EN AAS 8 Narssanc de PIII areara aaraa CRA Re ER ANS 8 PHP FI eiren ae san a a a ea Ne DM ren 8 PHP PID ye e a aea E SL E a a a A 8 PHP I 2 58 y ee ARR AR a AE a a E 9 P N A a a a r An Aa a ra a 9 PHP S Ea ie DRE a aE E A A 9 Un outil simple pour r soudre des probl mes complexes 10 Une plate forme intuitive facile assimiler 10 Installer PHP Apache et MySQL en moins de 10 minutes 10 Une syntaxe souple qui requiert de la rigueur 11 Une n cessit un minimum de connaissances en g nie logiciel 13 De nombreuses fonctionnalit s qui en font une plate forme communicante 14 Souplesse d ad quation la complexit du probl me et la comp tence FRA LU A RTS DT AU D EEO A E A E EE 14 ER Best Practices PHP Une architectu
199. ESZ L orient objet N 11538 2004 550 pages P ROQUES UML 2 par la pratique Cours et exercices N 11680 2 dition 2005 352 pages P ROQUES UML Les Cahiers du programmeur Mod liser un site e commerce N 11070 2002 170 pages A ROCHFELD P RIGAUX Trait de mod lisation objet Avec onze tudes de cas N 11035 2002 308 pages Guillaume Ponc on Ouvrage dirig par Libero Maesano Best practices PHP 5 Fer eee cn Pierre de Geyer EYROLLES a DITIONS EYROLLES 61 bd Saint Germain 75240 Paris Cedex 05 www editions eyrolles com DANGER Le code de la propri t intellectuelle du 1 juillet 1992 interdit en effet express ment la photocopie usage collectif sans autorisation des ayants droit Or cette pratique s est g n ralis e notamment dans les tablissements d enseignement provoquant une baisse brutale des achats de livres au point que la possibilit m me pour les auteurs de cr er des uvres nouvelles et de les faire diter correctement est aujourd hui menac e En application de la loi du 11 mars 1957 il est interdit de reproduire int gralement ou partiellement le pr sent ouvrage sur quelque support que ce soit sans autorisation de l diteur ou du Centre Fran ais d Exploitation du Droit de Copie 20 rue des Grands Augustins 75006 Paris Groupe Eyrolles 2006 ISBN 2 212 11676 4 PHOTOCOPILLAGE TUE LE LIVRE Pr face R ussir un logi
200. EXEMPLE PRATIQUE Construire un diagramme de classes participantes avant le diagramme de classes de conception Cette tape de mise en place des classes de types dialogues et contr les est souvent effectu e via la construction d un diagramme de classes participantes Ce dernier lie les acteurs les dialogues les contr les et les entit s avec des fl ches de mani re ce qu on voit bien le cheminement des actions Cette tape s av re souvent accessoire dans le cas d applications de petite taille Administrator Q I EN TicketControl ramo Tel sendTicket IncidentForm O getindidents Developer updatelncident Q IncidentManager C IncidentControl 0 EEE addincident updatelncident mergelncidents addincident getincidents mergelncidents Agent Figure 8 14 Exemple de classes participantes pour le projet UNANYM diagramme partiel Une fois que nous sommes pr ts construire notre diagramme de conception nous aurons besoin de deux connaissances utiles e celle de nos sp cifications fonctionnelles qui d finissent la plupart des actions r aliser e celle des motifs de conception usuels voir chapitre 10 qui peuvent apporter un bon coup de pouce la p rennit et la fiabilit de la solution Pour construire le diagramme de classes de conception nous allons nous baser sur notre diagramme de classes entit et sur le diagramme de classes part
201. G CDRW DVD SN 324F U203 240 HTS726060M3ATOO MHOASGA Capact 58 63 Go P riph SCSI lt d9 SAMSUNG CDRW DVD SN 324F U203 P rieh IDE Taille 247 73 Mo 29 30 Ge ufs local soft updates ufs local seft updates uts local soft updates ufs local seft updates Jdev adsie ldev adns1f Jdev ados1d l ev a4061g Totaux amp Find 2Find Next OFind Previous Done 1 89 Go 946 Ge 1 89 Go SA6 Ge 52 23 Go Highight M Match case Figure 6 2 PhpSysinfo un programme simple pour visualiser l tat d un serveur Choisir les outils d administration CHAPITRE 6 EEJ diteurs de bases de donn es quoi servent ils Tout le monde conna t le fameux PhpMyAdmin qui permet d avoir facilement la main sur une base MySQL Cette application est typiquement un diteur de bases de donn es Un diteur de bases de donn es doit g n ralement permettre un acc s facile en lecture et criture la structure et aux donn es des bases de donn es e une administration compl te des bases de donn es et de leurs composants vues triggers etc ba 2 4 w e un acc s aux param tres de s curit et de performances les droits d acc s la ges tion de la m moire etc diteurs courants Les SGBD courants poss dent de nombreux diteurs commencer par des outils int gr s Les versions courantes de MySQL et PostgreSQL poss dent des outils d dition graphiques clients lourds
202. HP avec de nouvelles extensions il est en revanche peu utile de compiler Sendmail pour une utilisation minimale d envoi d e mails valuer les interactions entre les diff rents outils Une fois les outils identifi s vient l tape des liaisons Nous pouvons par exemple disposer les outils en vrac puis tracer les liaisons et enfin faire des regroupements et mettre des remarques Un dessin comme celui de la figure 4 8 sera plus explicite qu un long texte pour cette tape E compil sur mesure Configuration lusr local etc extraction G n ration nn des confs da D E imi i J e Copix Sauvegarde dv T pMIX mensuelle gt DAN V NE w es Acc s partag Lance y C 6 CHA a Framework y XXE PNA 8 8 sn Applications Outils essor p doc IL De L w i P Sn synchronise Figure 4 8 Exemple de r flexion sur les interactions entre nos diff rents outils Organisation du projet conventions et outils PREMI RE PARTIE Passer l acte Une fois que vous ma trisez les probl matiques et les contraintes de votre environne ment vous pouvez passer l installation en priorisant vos t ches de mani re fournir l essentiel au plus vite Notre architecture d crite sur la figure 4 8 semble un peu indigeste lire Son but est surtout d apporter un moyen de r flexion sur la mise en place de l environnement
203. HVR Z1 vs HD100 3 6 HD100 vs HVX 200 3 6 HVR Z1 vs HDR FX1 4 6 HD100 vs HDR FX1 4 6 HVX 200 vs HD100 5 6 HDR FX1 vs HVR Z1 5 6 HVX 200 vs HDR FX1 6 6 HDR FX1 vs HVX 200 6 6 HD100 vs HDR FX1 Analysons maintenant ce qui ne va pas dans le premier et comment cela a t rectifi dans le second Assurer la qualit d un d veloppement PHP CHAPITRE 12 Tableau 12 1 Analyse des optimisations Pas bien La premi re ET la deuxi me boucle parcourent TOUS les produits du tableau complexit n n De nombreuses it rations ne sont pas n cessaires dans la mesure o des produits identiques ne se comparent pas et o les comparaisons a b et b a sont les m mes La condition if sert liminer les comparaisons inutiles Cette comparaison syst matique de deux cha nes a cependant un co t et n cessite la pr sence de types de donn es obligatoirement com parables L algorithme utilise un tableau temporaire t_products pour stocker les comparatifs Ainsi il est possible de conna tre leur nombre en appli quant ce tableau la fonction count dans la bou cle d affichage une op ration suppl mentaire qui n cessite une autre boucle de complexit n n 2 additionn e au jeu de boucles pr c dent Bien La premi re boucle for parcourt tous les produits et la deuxi me boucle ne parcourt que la liste des produits utiles pour la comparaison complexit n n 2 Il n y a aucune it ration inu t
204. L inconv nient est que vous devez faire confiance aux autres couches Ce principe d abstraction de la connaissance n est pas non plus compatible avec les valeurs des m thodes agiles qui pr conisent que les acteurs d un projet soient tous impliqu s tous niveaux Sans cela le risque de se retrouver avec un maillon faible est r el Malgr tout vous pouvez mettre en place un m canisme de couches d abstraction pour mieux organiser votre travail sans emp cher quiconque de conna tre l ensemble des briques du projet Tout cela d pendra de l envergure de votre projet viter d encombrer les objets m tier Comme nous l avons vu pr c demment PHP poss de quelques m canismes autori sant des d veloppements plus rapides et plus fiables Les objets m tier par exemple sont souvent constitu s de propri t s priv es et d une multitude de m thodes que Pon appelle accesseurs get set Mod lisation en UML pour PHP DEUXI ME PARTIE Ces accesseurs permettent de ma triser la mani re dont les propri t s sont interro g es ou affect es Par exemple si une propri t doit n cessairement tre un entier positif la m thode d affectation associ e fera cette v rification avant d affecter la valeur correspondante Si vous devez manipuler une vingtaine d objets m tier comportant trente champs chacun la d claration des accesseurs devient vite laborieuse et leur pr sence envahis sante L exemple suiv
205. NCE Le blog de Perrick Penet Vous pouvez suivre les r flexions et exp rimentations de Perrick Penet sur son blog l adresse suivante http www onpk net T moignages d utilisateurs CHAPITRE 18 Romain Bourdon g rant de la soci t Kaptive Kaptive est un studio de d veloppement sp cialis dans les applications web en PHP L entretien suivant concerne un projet de migration d une application initialement d velopp e avec des technologies Lotus En quoi consiste votre projet Notre client disposait d un intranet documentaire construit sur la technologie Lotus Domino Cet intranet est la disposition de plus de 3 000 utilisateurs r partis dans le monde L application fonctionnait bien lors de sa livraison mais l augmentation du nombre de documents et de la complexit de la hi rarchie ont rapidement frein l application jusqu la rendre inutilisable L application n tant pas fournie avec son code source il tait impossible de la faire voluer Plusieurs soci t s ont donc t consult es afin de trouver une solution per mettant de la remplacer tout en conservant la base documentaire en place Notre solution bas e sur une architecture LAMP prouv e a t retenue Quelle valeur ajout e apportent les choix technologiques de votre solution De meilleures performances dans un premier temps Une meilleure p rennit ga lement en donnant acc s au code source Les frais de ma
206. NIR Le cache d opcodes pour annuler les redondances de l interpr tation Nous verrons la fin du chapitre 14 dans la section mise en cache du code compil qu il existe plu sieurs applications de cache d opcodes Mettre en place un tel m canisme augmente les performan ces de PHP en limitant les redondances d interpr tation et de compilation du code En consid rant que vous ayez un fichier par classe ce qui est recommand pour la lisibilit de votre code il faudra veiller ne pas accumuler trop d inclusions En d autres termes le nombre d objets leur taille et la profondeur des h ritages devront tre raisonnables afin de garantir des performances optimales Exploiter les points forts de PHP les m ta structures ET CHAPITRE 11 Figure 11 15 Faites attention de ne pas D oo accumuler les includes AR d gt E i v b 4 H ritage Include 4 AK Classe Concevoir des objets propres et r utilisables Assembler des objets entre eux cest comme assembler des pi ces de Lego ou de Meccano un plan larchitecture de l application et des pi ces n cessaires la r ali sation les objets suffisent atteindre l objectif voulu Cependant les pi ces de Lego ne sont pas compatibles avec les pi ces de Meccano La mauvaise solution Une premi re solution de collaboration consisterait faire des trous dans les pi ces de Lego pour visser des pi ces de Meccano et agrandir les tro
207. P Html pdf php Fonctionnalit s EX l mentaires wS PgSQL FTP Figure 14 20 Mise en cache sur plusieurs niveaux Dans votre architecture pensez faire en sorte que les d pendances entre les diff rents niveaux de cache soient faciles d tecter en tenant jour par exemple une table de d pendances Cela vite de compliquer les choses en mettant en place des politiques de d pendance incertaines Figure 14 21 La mise en cache sur plusieurs niveaux implique des d pendances Assurer des d veloppements PHP performants et polyvalents Mise en cache bas niveau du code compil CHAPITRE 14 ER Lorsqu un script PHP est ex cut chaque page est pars e et compil e la vol e avant d tre ex cut e Cela engendre des op rations redondantes que le cache d opcodes peut optimiser La figure 14 22 illustre le principe de cet outil Il existe plusieurs applications optimisant PHP avec des caches d opcodes Avant d en adopter une sachez que ce cache est sensible la version de PHP V rifiez que votre choix est compatible avec l application que vous voulez utiliser Quelques applications de mise en cache d opcodes APC lonCube PHP Accelerator Turk MMCache eAccelerator Zend Optimizer http pecl php net package APC http www php accelerator co uk http turck mmcache sourceforge net gt http www zend com store products zend optimi
208. PARTIE Figure 13 6 Smarty TEMPLATE ENGIN Pour les Pour les d veloppeurs designers La classe Smarty La syntaxe environnement m thodes etc simple et personnalisable Les plugins Les modificateurs Utilisation cr ation fonctions PHP de traitements tpl new SmartyTPL lt html gt lt head gt tpl gt assign title lt title gt title lt title gt Hello lt head gt lt body gt tpl gt display cee Smarty poss de galement des fonctions de d bogage tr s pratiques dont la possibi lit de visualiser le contexte courant variables disponibles de chaque template sous forme de tableau HTML Classe d initialisation C est la classe que vous allez appeler chaque fois que vous aurez besoin de faire appel au moteur de templates Voici un exemple de classe d initialisation que vous pouvez utiliser dans vos scripts Classe d initialisation pour Smarty lt php Notre classe d initialisation class SmartyTPL extends Smarty public function __construct this gt SmartyO current_dir dirname _FILE__ this gt template_ dir current_dir templates this gt compile_dir current_dir tmp templates_c this gt config_dir current_dir config this gt cache_ dir current_dir tmp cache this gt caching false gt Simplifier et p renniser un d veloppement PHP EJ CHAPITRE 13 Appel du moteur de templates dans un code source PHP Le t
209. PHP cela n cessite d avoir eu l exp rience d autres plates formes notamment Java qui impose une rigueur de d veloppe ment PHP au contraire laisse une tr s grande libert Tout le monde peut d ve lopper en PHP mais fournir du code propre n cessite d avoir vu autre chose Il ne faut pas non plus n gliger les jeux de tests la g n ration de la documentation et toutes ces t ches indispensables la p rennit d un projet R F RENCE En savoir plus sur Matthieu Mary Matthieu Mary est animateur sur les forums de PHPFrance et auteur de composants open source Voici un bon point de d part pour mieux le conna tre gt http www phplibrairies com Bibliographie 1 Advanced PHP Programming de Georges Schlossnagle aux ditions Developer s Library 2 3 PHP 5 avanc de ric Daspet et Cyril Pierre de Geyer aux ditions Eyrolles PHP 5 Power Programming de Andy Gutmans Stig Saether Bakken et Derick Rethans aux ditions Prentice Hall Services Web avec J2EE et NET de Libero Maesano Christian Bernard et Xavier Le Galles aux ditions Eyrolles 4 5 er Code generation in action de Jack Herrington aux ditions Manning Publications 6 Der phplarchitect s Guide to PHP Design Patterns de Jason E Sweat aux ditions phplarchitect NanoBooks 7 UML 2 en action de Pascal Roques et Franck Vall e aux ditions Eyrolles 8 er Gestion de
210. PHP 4 et qui est encore largement utilis e Figure 11 8 XSLT comment transformer un N document XML Feuille de Donn es Feuille de n style XSL pour auformat style XSL pour en n importe g n rer du HTML XML N g n rer du SXW quel format i A Transformation a Transformation 2 XSLT XSLT Y Y Document HTML DO Feuille de Feuille de style XSL pour style XSL pour g n rer du PDF g n rer du SQL Transformation Transformation e XSLT XSLT Y Y Document PDF Document SQL La transformation XSLT peut tre vue comme une alternative aux moteurs de tem plates destin s associer une pr sentation un contenu Si vous exploitez souvent le format XML pour vos donn es cette solution peut tre envisag e Sachez cependant qu une feuille de styles XSL contrairement un template de pr sentation PHP ou Smarty sera difficilement exploitable par un diteur HTML wysiwyg what you see is what you get En outre cela peut compliquer la maintenance de la couche pr sentation de vos applications PHP Une transformation XSLT avec PHP lt php Cr ation d un analyseur XSLT xh xslt_create Cr ation d un document partir d un fichier et d une feuille de styles result xslt_process xh data xml style xsl Exploiter les points forts de PHP les m ta structures ES CHAPITRE 11 Affichage du r sultat if result echo result else echo Echec de la t
211. Pour tre plus r actif et au plus pr s des attentes des demandeurs de logiciels elle consiste les impli quer fortement avec les r alisateurs d s le d part et tout au long du projet Enfin PHP est adapt aux administrateurs syst mes qui cherchent un outil de script complet et pratique Dans ce domaine PHP est une bonne alternative Perl Pour r sumer PHP s adresse avant tout aux quipes de d veloppement web aux archi tectes du syst me d information et aux administrateurs syst me qui souhaitent gagner temps et fiabilit travers une plate forme simple d utilisation et facile maintenir RE Best Practices PHP Qui d veloppe PHP La communaut PHP est ouverte elle accueille de nombreux d veloppeurs testeurs traducteurs et r dacteurs Un noyau constitu de 7 d veloppeurs confirm s prend les d cisions essentielles qui touchent au c ur de PHP Plusieurs quipes travaillent autour de PHP L quipe de d veloppement environ 135 personnes s occupe des volutions de PHP et de ses extensions cr ation de nouvelles fonctionnalit s corrections de bogues et remaniements PHP est d velopp en langage C L quipe de documentation environ 260 personnes maintient constamment jour la documentation traduite en 23 langues L quipe PEAR environ 190 personnes s occupe des d veloppements des biblio th ques PHP classes utiles au d veloppement d applications PHP L quipe PECL environ
212. Prod le s ma amateur dedans Qj generee par Adenug MEET E Function Location Edition 1 main web gpn prj fraternity home frames menu php 0 2 LDAP gt search web gpn prj fraternity home frames menu php 31 3 ILDAP gt rsearch web gpn pri fraternity classes Idap php 126 4 LDAP gt open Iweb gpn prj fraternity classes Idap php 170 ldap bind web gpn pri fraternity classes Idap php 145 id_Idap resource 21 ldap link dn_login n Manager dc fraternity de fr pass l secret aoa http flocalhost loademacs pho7f web gpn prj fraternty dasses idap phpBl 170 In new window Outils de d bogage pour PHP L utilisation d un outil de d bogage digne de ce nom permet d aller beaucoup plus loin Vous allez pouvoir consulter les performances de chaque appel de fonction et obtenir un maximum d informations sur vos traitements et vos erreurs Nous vous proposons ici un rapide aper u des outils Xdebug et APD qui sont large ment utilis s par la communaut des d veloppeurs PHP L outil KCacheGrind que nous d couvrirons en dernier fournit une version graphique conviviale des traces des d bogueurs APD APD est un d bogueur qui g re le profiling et le d bogage interactif Il travaille de mani re transparente et consomme peu de ressources Il est associ un outil en ligne de commande pprofp pour analyser les traces engendr es Son installation est rapi
213. Quelques op rations add import i commit effectu es par un ajout d un fichier ajout de fichiers en validation des 3 L TT dans le projet masse dans le op rations remove gestionnaire de versions j d p t de donn es add modifications j RE 7 Modus 1 D D E CL Module2 remove checkout update gt J retrait d un extraction mise a A fichier du compl te jour des Spot de donnees projet d un module fichiers init cr ation du d p t tag diff prendre un clich d un voir les diff rences module un instant t entre deux versions 2 Apr s avoir configur le d p t pour qu il soit accessible distance nous allons voir comment faire cela plus loin avec Subversion nous devons nous y connecter pour travailler C est le r le de l op ration login Une fois identifi nous pouvons faire un checkout sur le module qui a t cr afin de l importer sur notre machine de d veloppement Nous avons maintenant une copie du projet li notre d p t de donn es distant 3 Pour ajouter et supprimer des fichiers et faire en sorte que ces op rations soient r percut es dans le d p t de donn es nous allons utiliser respectivement les com mandes add et remove Les modifications sur des fichiers existants seront prises en compte d office au moment de la validation 4 Pour valider enfin il suffit de lancer l op ration commit dans le r pertoire conte nant les fichiers
214. RE 11 Exploiter les points forts de PHP les m ta structures 251 Les trois m ta structures de base 252 Les tableaux ean RE Tr ee ee ie 253 Quand et comment utiliser des tableaux 253 Exploiter la souplesse et la simplicit des tableaux PHP 253 Convertir des donn es en tableau 253 Exploiter la souplesse des tableaux ins nl item bte 254 Op rations utiles pour manipuler des tableaux 255 Les documents XML 255 Quand et comment utiliser des documents XML 255 xx Best Practices PHP Concevoir et manipuler des documents XML avec PHP 257 SimpleXML enio raa e a e e a nomme ie onte 258 SAX aaa Ea e e a AAEE E N E E E AE 259 DOM ayr a a a a E A Ce ne 260 D Ce A y Gere PR RE TENAAAN 261 LS ObJ tS Es rreri eme EE tete Res 264 Qu st ce gun Objet Pis crire nm tn ere EREK 264 Quand et comment utiliser des objets 45240 def tnhs re 265 L logig e m tier comis terei torisi DE REENER EE EA E E EE 265 Les objets SCONTTOLES Dro ne O AAEE art rentree EE AOD 267 Les fonctionnalit s similaires nes lame eee ets 267 Concevoir d s objets performants L na Mens nn en ee te 268 Sp afiecit edes objets PHP RE eiieeii ea 268 Concevoir des objets propres et r utilisables 269 La ma
215. RTIE Si vos formats sont plut t h t rog nes un moteur g n rique Smarty phplib vous conviendra sinon recherchez plut t une application sp cifique un format donn fpdf par exemple Avez vous besoin d une syntaxe ou d un langage sp cifique L utilisation d une application comme Smarty demande l apprentissage d un langage adapt la cr ation des templates Les avantages sont de disposer d une syntaxe plus simple d un environnement dis soci de celui de PHP et de possibilit s de personnalisation int ressantes Vous pouvez par exemple d cider d utiliser deux instances de moteurs pour un seul jeu de templates comme le montre l exemple ci apr s Ainsi apr s le passage de la premi re instance du moteur seuls les appels qui correspondent une syntaxe pr cise sont interpr t s appels entre et La deuxi me instance peut ensuite passer interpr tant les appels qui la concernent appels entre et Un template m langeant deux syntaxes include file header_ skin tp1 foreach from products item product assign var product_id value product gt id include file product_ product gt type tp1 foreach include file footer_ skin tp1 Le m me template apr s passage de la premi re instance du moteur include file header_bluesky tp1 assign var product_id value 34 include file product_book tpl
216. S method gt content class content scope function class method separator foreach content params AS param gt val class separator param class val val class content code class return class D finition de la classe EyrollesProduct display_code echo this gt productName display_code price price euros n class class_name EyrollesProduct class attrs productType scope private class attrs productType value book class attrs productName scope private class attrs productName value PHP B P class methods display scope public class methods display code display_code class C methods display params price Exploiter les points forts de PHP les m ta structures ES CHAPITRE 11 Cr ation de la classe et test eval array2class class eyrollesProduct new EyrollesProduct eyrol lesProduct gt display 35 Le code pr c dent affiche les donn es suivantes PHP B P price 35 euros Des tableaux aux documents XML Utilit Les tableaux outils tr s pratiques de manipulation de donn es en PHP sont souvent utilis s pour g n rer des documents XML Le tableau sera ici un format de transi tion permettant une manipulation ais e de donn es provenant par exemple
217. S 2 CREUSE ne LS 228 ARR CR PAP DO SR US Sr CE Re SE E ET tee 228 Le prototype Prototype is ne nn an pre tan 229 Prnape dum prototyper SR Sn NE PTE RATE td ARTS 229 Leprototypeen PAR scene sense etes etes 229 Le singleton melon rene ee le Serre 229 Principe du singleton ER tes ENT SN tee IN SE RSS 229 Mise en pratique D De de ER en Re nn sn Ces 231 Les motifs de structuration 232 L adaptateur Adapter es et A dattes Dee ds 232 Principe de l adaptateur SES Rae ELA RE de Led on 233 MVC Model View Controler 233 Le pont Bridge rire us ans Re nee US en PS Re un 233 Pinape Aw PONT ESS GNT PP NE SCA 233 A TE ARR PR T E E RTA G 234 Le composite Composite tes een rte Rime doper ais dat 234 Principeducompostte sra es Dre mess Dan ete E O 234 Le d corateur Decorator 235 Priticipedud cor tetr lt ee tennan iiaeaa akaa a iA E 235 Miseen pratique sas mesed aei siia da e Moda DURS De G Gaara 235 la facade ssena Ea RE ae E A ENS SD IE 236 Principe de la fa ade ete NN LE NA IN Une 236 MISE RAT OS NOR RTE ER TE AN 236 L pro Proy er ee ae needs SRE TER ans 236 RU AT LR LS RE T a a aa 237 Id e de mise en pratique nt ESS Pr RS nn ht one 237 Les motifs d comportement 2 24 3444 errre 238 La cha ne de responsabilit Chain of responsability 238 Principe de la cha ne de responsabilit
218. Si l on se concentre sur les professionnels je dirai que la plate forme est tellement facile utiliser que l on obtient des r sultats visibles tr s rapidement Cette satis faction du r sultat imm diat a tendance ne pas pousser le d veloppeur finaliser son application et le perturber dans l estimation du travail restant homog n iser l interface par rapport au reste de l application faire des tests d utilisation complets penser toutes les r gles de gestion etc Disons en une phrase que comme on obtient un r sultat satisfaisant tr s vite on oublie que le temps qui nous reste aurait pu nous apporter un r sultat proche de la perfection Une derni re erreur mon sens que font certains intervenants passionn s du monde PHP d nigrer syst matiquement ce que font les grosses soci t s avec les logiciels propri taires On se place volontairement des ill res pour ne voir que l objectif atteindre en refusant d accepter que ces soci t s proposent tout de m me de bons outils Je trouve que cela d cr dibilise un peu la d marche du c t professionnel avec une caricature litiste du savant fou Quelle ont t votre meilleure et votre plus mauvaise exp rience avec PHP Ma meilleure exp rience avec PHP fut en tant que d veloppeur dans une mission derni re chance Le projet consistait d velopper une application capable de traiter les demandes diverses des employ s d une g
219. T du produit PN Fin J l Eee ee a AccesBD Concr tement on parle de logique m tier car il s agit de m canismes sp cialis s dans un domaine pr cis par exemple celui des ouvrages informatiques La logique m tier fait intervenir de nombreux traitements qui manipulent des types de donn es sp cifiques classes plus ou moins complexes mis en commun dans le syst me d information L utilisation d objets m tier pour les traitements objets contr les et les donn es objets entit s simplifie la mise en place des processus m tier associ s Les objets apportent ici une sorte d abstraction permettant de manipuler des algo rithmes complexes en grande quantit Figure 11 12 Un objet contr le Quelques objets ad h et leurs relations G n rer le Utilisateur rapport des citoyens d un Etat taten XML h y L4 De ra lt Personne y Des objets b Y EE 4 entit s gt Zone Citoyen g ographi que Exploiter les points forts de PHP les m ta structures CHAPITRE 11 Les objets contr les Ils proposent des traitements vari s et utiles de l information Par exemple le pro cessus de production de documents PDF peut tre englob dans un objet qui fournit des outils de cr ation partir d un format XML HTML ou d objets m tier Figure 11 13 Un objet de cr ation Documente XML l de documents PDF Documents HTML Objet g n rateur de Docume
220. URL par le client http mon_site mot_cle mot_cle2 Erreur 404 Redirection l l l l l l vers un fichier le i contr leur frontal l l l l l l l G n ration du fichier statique Idoc_root mot_cle mot_cle2 index html DocumentRoot Le C F analyse les mots cl s de ne Dies ts TE SA l URL et d termine le contenu a r appeler Cr ri I A1 A2 A3 ae mr Appel des actions mr Vue i associ es g n ration gt Contr leur i Cam d la page MTS TT Te iris 1 Mod le Figure 2 8 Exploitation de l erreur 404 dans le mod le MVC Gr ce ce syst me il est possible et facile de mettre en place les fonctionnalit s suivantes e L interpr tation dynamique des URL Au lieu d tre contraint d utiliser des URL fig es comme dans la plupart des applications web vous pouvez mettre en place un syst me qui analyse les mots cl s con tenus dans l URL propos e et construit le contenu de votre page en fonction de ces mots Ainsi vous aurez beaucoup moins de pages mortes e Une mise en cache efficace en g n rant les fichiers appel s via l erreur 404 dans la racine des docu ments DocumentRoot afin qu ils soient par la suite directement accessibles par le serveur HTTP Les objets m tiers Ils repr sentent les donn es l mentaires manipuler d un point de vue m tier Par exemple un produit de voyage un fournisseur ou un composant lectronique sont traduisi
221. Utilit de la transformation La d s rialisation d objets avec WDDX resti tue la structure et les donn es La r ception de donn es via SOAP peut se faire sous forme d objets si la description du service le permet La transformation d un flux XML en objets DOM simplifie la navigation Le principe de fonctionnement de ces deux outils a t expliqu dans ce chapitre Exploiter les points forts de PHP les m ta structures ER CHAPITRE 11 Impl mentations possibles De multiples applications sont envisageables Les parseurs XML tels que DOM SimpleXML ou SAX sont de bons outils pour cr er des objets partir de documents XML sp cifiques En Java de nombreux outils utilisent le XML comme structure de base pour leurs donn es et leur configuration Pour des applications web en PHP mettre en place un langage interm diaire bas sur XML est double tranchant D une part le format XML doit tre lu analys et transform cela demande des ressources et prend du temps D autre part l abondance de fichiers XML n est pas forc ment tr s facile exploiter la main Les fichiers ini sont une bonne alternative aux fichiers de configuration XML et si vous souhaitez faire du stockage de donn es structur es une bonne API de g n ra tion de code devient souvent beaucoup plus performante que du XML Nous abor derons ce sujet en d tail au chapitre 14 dans la section G n ration de code Des tableaux aux obje
222. Vous pouvez exploiter ce principe pour g n rer du code en fonction de param tres utilisateur En revanche faites attention de ne pas laisser de possibilit s d attaques par inclusion avec ce principe Acc l rer et optimiser des d veloppements La m thode de d veloppement un peu particuli re que nous allons voir ici permet de disposer de plusieurs versions personnalis es optimis es et acc l r es d une m me application par le biais d un g n rateur original que nous appellerons g n rateur d application Un g n rateur d application Le principe de ce g n rateur est d crit sur la figure 14 13 Le d veloppement de l application est assur par le respect de r gles qui non seulement facilitent le travail du d veloppeur mais fournissent plusieurs versions optimis es partir d une application gabarit Comme nous le voyons sur la figure 14 14 ces versions g n r es d une m me application sont optimis es selon plusieurs crit res Selon les cas les r glages effec Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Figure 14 13 A Principe du G n rateur g n rateur d application Application G n ration Application gabarit g n r e Param tres de g n ration langue fr en es debug on off optim on off server client all I client id 678 l z Figure 14 14 tu s privil gient les performances po
223. a Puis recompilez Apache en suivant la proc dure pr c dente 44 D finition des exigences pour l exploitation QUATRI ME PARTIE Configuration d Apache pour PHP Une fois que vous avez compil ce qu il fallait il vous faut ajouter quelques lignes dans le fichier httpd conf d Apache pour pouvoir utiliser PHP Editez le avec votre diteur pr f r et ajoutez y les lignes suivantes Directives ajouter dans httpd conf pour faire fonctionner PHP Directives ajouter uniquement si vous avez compil PHP en module dynamique LoadModule php5_module modules Tibphp5 so Directives ajouter dans tous les cas AddType application x httpd php php phtml AddType application x httpd php source phps 16 Assurer la disponibilit s curit et maintenance Comment assurer la disponibilit et la fiabilit des applications Comment confi gurer les bons d mons et s assurer que tout est op rationnel tout moment Ce cha pitre s adresse aux administrateurs d infrastructures h bergant des applications PHP Nous verrons dans un premier temps quelques installations et des configurations utiles la mise en place d un environnement s curis et maintenable Ceci comprend galement les probl matiques de reporting li es l tat de l environnement Nous aborderons galement les m canismes utiles de surveillance syst me et applica tive Toutes ces strat gies contribueront la progres
224. a centaine des plus utilis s Les modules les plus populaires sont inclus par d faut C est le cas par exemple dans PHP 5 de iconv sqlite 1ibxml les expressions r guli res pcre etc Vous activez ou d sactivez les modules que vous voulez la compilation de PHP Une fois PHP compil vous pouvez galement ajouter des modules dynamiquement Pour optimiser votre compilation ou pour restreindre volontairement certaines fonc tionnalit s il suffit d all ger PHP de certaines fonctionnalit s incluses par d faut Par exemple si vous refusez d utiliser les expressions r guli res posix et la gestion des sessions compilez PHP avec les options disable posix et disable session L environnement d ex cution ET CHAPITRE 15 Figure 15 2 Une collection de modules populaires pour PHP Quelques modules PHP populaires apache apxs curl ingres ming pcre regex caudium dba interbase mssql snmp libxml gd Idap mysql mysqli sqlite openssl gettext ircg oci8 oracle xmirpc Zlib iconv mbstring ibm db2 xsl cpdflib imap mcrypt odbc tidy Plut t que de les lister une par une pour chaque version de PHP voici une com mande Unix Linux vous fournissant les fonctionnalit s g n ralement activ es par d faut que vous pouvez d sactiver lancer la racine des sources de PHP Obtenir la liste des fonctionnalit s que l on peut d sactiver configure help grep e disable e without Configuration de PHP Le fame
225. a nt page 416 Pr voir et surveiller les incidents possibles Sn unnan 416 Outils de MONO ESS EEN EEE OA RE Lau 417 Centraliser et g rer les incidents a n nd ds SRE RS 417 Mettre en place le m canisme de surveillance 420 Surveillance du syst me des serveurs et du r seau 420 Les outils disponibles sur Internet issus near heseste ane dbenn re 420 Ressources utiles surveiller 420 Cr er soi m me un r seau de tests pour le monitoring 422 Surv illanc applic tiv Lies ne Sn na LA seat nn 422 Table des mati res XXV CHAPITRE 17 Exploiter un environnement d ex cution cl en main 425 La Zend Platform comme environnement pour la production 426 qui s adresse la Zend Platform sise stuine dieser tas 427 Avantages et inconv nients de la Zend Platform 428 Perform nces et QUAI SET ne tn nn ons RP PAU RE en 428 Une interaction native avec Java 430 R partition de charge et CUS se pe reed ee hd nee 432 Une solution Zend Exclusive 433 Installation param trage de la Zend Platform 433 Mise en place d une application sur la Zend Platform 435 Avenir de la Zend Platform et de ses d riv s 435 CINQUI ME PARTIE T moignages 7 CHAPITR
226. a propre m thodes norra ne ne fe mine Mass 44 Les lois du succ s d une m thode nouvelle 44 Sinple et coherente Vas Danse paul Eee D behind ee 44 Document t s il anse nat rite catstn si ele ein nice tal ae 44 Adapt e et travaille soera naan ST Re PT CR EEE EA 44 Domaines d application dune m thode 2 4ii4siieeeissnstess 45 Conventions et proc dures li es l organisation du d veloppement 45 R partition des r les au sein de l quipe 46 Des r les et des responsabilit s 22 ee tton Dr tarot a en TRES pe 6 48 Maitrise d ouvrage et maitrise d uvre Le as ere mu eee 49 Des proc dures mettre en places satin ms gas 50 Qui collabore avec qui Ses he tn Rene 51 Conventions li es l criture du code source 52 R gles l mentaires d criture 25e ia his Eee ie attente 53 Formatage dun code source nie nannan 53 Composition du formatage Este sens mn VIRE d Sr R 53 Conventions de formatage courantes Le Se eu nie 54 Erreurs courantes 4e ere en Ne a ee Ta AE ne na ERA 57 R gles de nomMALe Lis nee Be PAR ET RENAN At Ed 58 Choisissez Une langu due Essia en as rase DRE BEA SELS E E 58 Nommage des versions LES NS Se UE rit ee corne 60 Quelques rappels sur les principes du versionning 60 Nommage des versions n n Se ES SR no etes 62 CHAPITRE 3 Installer et utiliser un gestionnaire de
227. a structure du code classes fonctions etc afin qu elle soit plus claire plus pratique plus performante En savoir plus sur les niveaux de remaniement Le remaniement en action Comme il existe de nombreux remaniements l mentaires r ertori s commen ons gt par distinguer les types de modifications que nous pouvons effectuer Type Camouflage Consolidation Contr le D placement Encapsulation Extraction Factorisation Fusion Remplacement Renommage S paration Suppression Tableau 13 2 Types de remaniements Un exemple parmi d autres Changer la port e d un attribut ou d une m thode pour la rendre inaccessible depuis l ext rieur Cr er une fonction qui teste une expression logique complexe Ajouter une ou plusieurs assertion s permettant de contr ler l int grit des donn es D placer une m thode g n rique d une classe sp cifique vers une classe plus g n rale Manipuler les attributs d une classe par l interm diaire d accesseurs get set au lieu d y acc der directement Scinder une classe une m thode une fonction en deux ou trois Faire h riter deux classes similaires d une classe m re qui contiendra les m thodes et attributs en commun Cr er une table partir de deux afin de simplifier la manipulation des donn es Remplacer un tableau par un objet Renommer des mots cl s variables fonctions classes afin de les rendre plus lisibles S parer une boucle gourmande en deux
228. acile comprendre La liste des op rations utiles est disponible en tapant simplement la commande svn help Quelques op rations de base avec subversion R cup ration du contenu du d p t phpapps svn checkout http localhost svn phpapps Cr ation d un dossier my_project dans le d p t phpapps et demande d ajout cd phpapps mkdir my_project svn add my_project Cr Renommage du fichier index html en index php svn rename index html index php Validation des op rations cd svn commit m Cr ation d une nouvelle appli Clients graphiques Sous Windows l installation du programme TortoiseSVN comme client Subversion est largement recommand e Il est convivial s int gre astucieusement l explorateur et permet d effectuer de tr s nombreuses op rations Des diteurs comme Eclipse int grent galement un client Subversion D autres diteurs comme PHPEdit int grent un explorateur Windows compatible avec TortoiseSVN Installer et utiliser un gestionnaire de versions nm CHAPITRE 3 Sous Unix Linux l application RapidSVN est compl te et pratique Pour ceux qui passent souvent d un environnement Unix Windows RapidSVN fonctionne gale ment sous Windows Quelques liens utiles gt http tortoisesvn tigris org gt http subclipse tigris org gt http rapidsvn tigris org Concurrent Version System CVS CVS est l outil de versionning le plus r pandu l
229. ad array splice Les balises ouvrante et fermante de m me nom englobent un contenu Texte de l intro ou d autres balises intro et chapter dans book ou les deux id te Figure 11 3 i Un document XML i 1 f 1 book title author z x 1 N i intro i chapter i j I l l L lt book title PHP B P author G Pon on gt lt intro gt Texte de l intro lt intro gt lt chapter id 1 i title PHP est il adapt gt 1 lt p gt Un paragraphe lt p gt lt p gt Un autre paragraphe lt p gt lt p gt Ainsi de suite lt p gt lt chapter gt lt lbook gt Exploiter les points forts de PHP les m ta structures EX CHAPITRE 11 On peut galement inclure dans un document XML des commentaires lt je suis un commentaire gt et des espaces de noms qui sont utiles pour distinguer plusieurs parties d un document lt mon_espace book gt lt mon_espace book gt La balise sp ciale lt CDATA 1 gt est galement utile pour inclure du contenu qui ne doit pas tre interpr t par le parseur XML En revanche un document XML n est dit valide que s il respecte des r gles en particulier e Les balises ne doivent pas s entre croiser lt book gt lt intro gt lt book gt lt intro gt n est pas du XML e Une balise ouvrante est toujours suivie d une balise fermante du m me nom Si la balise fermante suit directement la balise o
230. afin d optimiser les performances l ex cution e Le cache de fonctionnalit s op r au niveau interm diaire met en cache le r sultat d op rations l mentaires co teuses telles que les appels aux services web bases de donn es ou r cup ration de donn es via FTP HTTP etc e Le cache frontal op r au niveau le plus haut est orient requ te utilisateur Chaque requ te est mise en cache quels que soient les appels qui se trouvent der ri re Une mise en cache plusieurs niveaux implique souvent quelques complications dans le m canisme de r g n ration des donn es de cache En effet cela forme une cha ne Lorsqu une donn e est mise jour dans la couche fonctionnalit s cela implique des modifications sur la couche pr sentation Ces modifications devront tre prises en compte La figure 14 21 illustre cette probl matique Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Optimisations C C Optimisations l mentaires A iei Macro optimisations E F 3 i SD ad a i nEn Extensions C PHP B i p i E o m i J m bas niveau niveau interm diaire haut niveau Mise en cache Mise en cache i Mise en cache d opcodes i de fonctionnalit s frontale Optimisation en C du Cache de requ tes Cache de bad comportement de PHP services web etc pag ES a a r i k rh PH
231. ain Pour une couche donn e celle du dessous rend toujours service celle du dessus La couche du dessus re oit de la couche du dessous une API intuitive et n a pas besoin de conna tre le d tail de son fonctionnement La figure 9 2 met en avant le principe de couches d abstraction appliqu laudio visuel se lit de bas en haut C est gr ce une telle cha ne qu il est possible aujourd hui de produire des films de qualit EL Distributeur Fournissent une bande vid o pr te tre projet e en salle sans le story board les logiciels complexes de montage etc IE CNE Producteur amp r alisateur fi Figure 9 2 Principe des couches d abstraction appliqu es l industrie du cin ma Projette le film en salle sans se soucier de la ma ni re dont on se sert d une diode ou d un micro A partir d un sc nario story board sc nes avec acteurs et prises de vues montent un film Fournit du mat riel audio visuel cam ras micros etc avec un manuel qui n explique pas comment fonctionne une diode Fait des plans assemble les mat riaux et composants pour cr er des cam ras magn tos Fournit les composants et leurs caract ristiques techniques sans entrer dans les d tails de composition fabrication Fabrique des diodes des transistors et des condensateurs partir de mati res premi res Optimiser le mod le pour PHP ETS CHAPITRE 9 Sur le m me principe la f
232. aintenant pr t vous lancer dans l aventure des tests unitaires Com mencez par lire consciencieusement la documentation de l outil que vous utilisez afin d avoir en t te toutes les possibilit s qui s offrent vous SimpleTest en fran ais gt http onpk net php simpletest PHPUnit tests unitaires avec PEAR gt http www phpunit de 13 Simplifier et p renniser un d veloppement PHP Commencer un projet de d veloppement PHP est facile Le finaliser avec succ s est une autre affaire De nombreux d veloppements se heurtent un jour ou l autre au probl me de la complexit croissante qui rend difficile la compr hension du code Trois d marches vous permettront d am liorer la lisibilit de votre application la documentation le remaniement refactoring et l utilisation de emplates Dans la partie documentation nous apprendrons non seulement doser le fond et la forme de nos commentaires mais galement conna tre et utiliser les outils qui accompagnent la documentation d un projet en PHP Le remaniement est quant lui un moyen efficace de maintenir un code lisible Il consiste essentiellement modifier la structure du code sans que cela malt re les fonctionnalit s dans un unique but d am lioration de la lisibilit Enfin le emplate est un concept largement exploit dans le monde PHP Son r le principal est de s parer la pr sentation de la logique Les templates agissent sur
233. ais moins compl te existe l extension Oracle Choisir les ressources et les supports de donn es ET CHAPITRE 7 Documentation des extensions Oracle pour PHP Oracle http fr php net manual fr ref oracle php OCI8 http frphp net manual fr ref oci8 php Pourquoi choisir Oracle La plupart des gens qui choisissent Oracle le font par souci de s curit Oracle est galement un produit commercial vendu avec un support ce qui rassure le monde professionnel face des SGBD comme PostgreSQL Vous pouvez choisir Oracle si votre projet n cessite l utilisation de bases de donn es exigeantes complexes et s curis es Si votre r seau est g ographiquement r parti Oracle dispose d outils de d ploiement efficaces En revanche une bonne ma trise d Oracle n cessite un administrateur de bases de donn es DBA qualifi SQLite SQLite est un SGBD permettant de cr er et manipuler des bases de donn es embar qu es Cette application est simple et performante mais pr sente quelques limites SQLite a t propos l occasion de la sortie de PHP 5 Caract ristiques de SQLite SQLite permet de cr er et d acc der des bases de donn es embarqu es En d autres termes fini les probl mes d installation ou de mot de passe pour acc der une base de donn es tout est int gr dans l application Dans le cas des autres SGBD d placer une application n cessite une installation de ou des b
234. algorithme ET Mod lisation en UML pour PHP DEUXI ME PARTIE Une m thode sp ciale TlaunchMethodO est charg e d ex cuter ces op rations primi tives les unes la suite des autres L impl mentation de l algorithme est d l gu la classe concr te ConcreteClass qui tend la classe abstraite AbstractClass Figure 10 19 Le motif patron de m thode Template of Method m UML AbstractClass launchMethod primitiveOperation_1 primitiveOperation_2 primitiveOperation_n this gt primitiveOperation 1 this gt primitiveOperation 2 527 this gt primitiveOperation n Principe nm me Pea 7 Grandes lignes de l algorithme I d fini par une Impl mentation des l succession op rations primitives d op rations m thodes remplir primitives lt lancement p Mise en pratique Par l interm diaire de ce motif vous pouvez impl menter des algorithmes similaires ayant des comportements diff rents Par exemple un algorithme de nettoyage qui d finit des op rations primitives retirer les doublons nettoyer les orphelins et vider le cache peut avoir deux impl mentations utilisateurs et produits La m thode de lancement s appellerait alors launchCleaner Lancer le nettoyage Avec PHP 5 vous pouvez automatiser le comportement de la m thode de lancement en it rant sur les m thodes qui c
235. amentale Il a besoin d un syst me d exploitation qui fonctionne d un serveur web qui fonctionne et de biblioth ques externes pour coller le tout Lorsqu un seul de ces l ments arr te subitement de fonctionner PHP doit identifier le probl me et le r parer au plus vite Puisqu on rend le cadre fondamental plus complexe en ne s parant pas les ex cu tions des threads ni les segments m moires ni un endroit clos pour traiter chaque requ te entrante des pieds d argile sont introduits dans le syst me PHP Pour en savoir plus gt http www php net manual fr faq installation php Caudium C est un serveur web l ger optimis pour la gestion de pages dynamiques Ses avan tages sont ses performances son syst me de templating sa facilit d utilisation et sa flexibilit Caudium est portable sur un bon nombre de serveurs Unix Ce serveur est s duisant pour une utilisation PHP en revanche il est facile de se rendre d pendant de lui en usant de toutes ses caract ristiques Lisez bien la docu mentation pour conna tre toutes ses possibilit s Caudium gt http caudium net D finition des exigences pour l exploitation QUATRI ME PARTIE IIS PWS Ces serveurs sont sp cifiques Windows Si vous les ma trisez bien et ne comptez pas migrer sur d autres plates formes ils constituent de bons choix En revanche rendre vos scripts PHP d pendants d eux est double tranchant une mi
236. amer vos d veloppements auto chargement de classes Plut t que de s encombrer avec de multiples include vous pouvez maintenant d clarer la fonction __autoload qui s occupera de charger la classe voulue si celle ci n existe pas Exemple avec _autoload fichier ClassTest php lt php class ClassTest public function display txt echo txt lt br gt n gt Exemple avec _autoload fichier autoload php lt php Cette fonction peut tre d clar e dans un fichier include commun function __autoload class_ name require_once class_name php Test de notre classe obj new ClassTest obj gt display Hello gt ET Mod lisation en UML pour PHP DEUXI ME PARTIE La surcharge de propri t s et de m thodes Surcharge de propri t s Cette surcharge est d finie par les m thodes sp ciales _set et __getO Lors de l appel d une propri t qui n existe pas __set est automatiquement sollicit e s il s agit d une affectation et __get s il s agit de demander une valeur Vous pouvez ainsi simuler des manipulations de propri t s en contr lant leur acc s L exemple suivant met en uvre une classe qui fait appel un fichier de configuration ini Exemple d utilisation de _setO et ___get lt php class IniConfig private iniValues array private iniFile Chargement du fichier de configuration dans le contexte de la cl
237. an g res unions triggers proc dures stock es jointures compl tes contraintes cur seurs langage proc dural PL pgSQL PL PHP etc Pourquoi choisir PostgreSQL PostgreSQL est un couteau suisse de luxe dans le monde des SGBD II est Open Source poss de une grande communaut de d veloppeurs et existe depuis de nom breuses ann es le projet a commenc en 1989 Le choix de PostgreSQL pour PHP est un bon choix en toute circonstance Exemple d acc s PostgreSQL avec PHP dbconn pg_connect dbname my_database query SELECT FROM address_book WHERE firstname 1 pg_prepare dbconn query query result pg_execute dbconn query array Guillaume Oracle Oracle est un SGBD relationnel commercial complet et performant Il est le choix de nombreuses entreprises dans le monde Toujours la pointe de la technologie Oracle est une r f rence depuis de nombreuses ann es Caract ristiques d Oracle Pratiquement tout ce que vous pouvez trouver comme fonctionnalit s SGBD se retrouve dans Oracle Il est m me possible aujourd hui de profiter de la technologie grid un syst me astucieux permettant d augmenter les performances du SGBD en faisant travailler les ordinateurs inactifs d un r seau L extension OCI8 pour Oracle 7 et 8 et PHP est compl te et performante Elle fera le bonheur des utilisateurs d Oracle les plus exigeants Une deuxi me extension plus g n rale m
238. anche dans un r pertoire diff rent de celui utilis pour l export initial appel galement branche principale Nous pouvons main tenant travailler sur notre branche comme s il s agissait d un projet ind pendant 8 Vous devez travailler sur un fichier mais vous ne comprenez pas les modifications qui ont t effectu es par vos collaborateurs vous avez la possibilit de regarder son historique ses diff rents contributeurs et le contenu de leur travail Pour cela les op rations history et 1og permettent d extraire des informations sur les der ni res op rations effectu es et l historique des validations auteurs versions com mentaires L op ration diff permet par la suite de visualiser les diff rences entre deux versions d un m me fichier 9 Lorsque vous travaillez deux sur les m mes lignes d un m me fichier en m me temps l outil de versionning va s en apercevoir Lors de la mise jour update si un fichier a t modifi dans le d p t de donn es et en local au m me endroit s il s agit d un fichier ASCII l utilisateur sera averti qu un conflit a lieu et ne pourra valider le fichier incrimin qu apr s lavoir r solu Pour cela le fichier doit tre dit modifi puis revalid Versions de fichiers et versions d applications Le chapitre 2 pr sente la mani re dont doivent tre nomm es les versions des appli cations Elles diff rent des versions de fichiers par le fait qu el
239. aniement et d volution e Le d veloppement d algorithmes complexes en une seule fonction m me bien document s ne permet pas une compr hension imm diate du code Si un tel algorithme doit tre impl ment vous pouvez vous inspirer du motif de conception Patron de M thode Template of Method d crit dans le chapitre 10 Utilisation de PEAR Comme nous l avons vu plus haut PEAR est une biblioth que de composants et non un v ritable framework Un ex cutable PEAR qui permet une maintenance pratique des composants est maintenant fourni avec PHP L installation de composants PEAR ressemble un peu l installation de paquetages sous Unix Linux Une simple commande permet de t l charger et mettre disposi tion les ressources voulues Choisir les ressources et les supports de donn es REX CHAPITRE 7 Exemple d installation d un composant PEAR pear install a PHPUnit2 downloading PHPUnit2 2 2 1 tgz Starting to download PHPUnit2 2 2 1 tgz 38 575 bytes Rens done 38 575 bytes downloading Benchmark 1 2 3 tgz Starting to download Benchmark 1 2 3 tgz 6 679 bytes done 6 679 bytes downloading Log 1 8 7 tgz Starting to download Log 1 8 7 tgz 32 693 bytes done 32 693 bytes downloading DB 1 7 6 tgz Starting to download DB 1 7 6 tgz 124 807 bytes done 124 807 bytes Optional dependencies bcmath PHP extension is recommended to utilize some features install ok Benchmark 1 2 3
240. ant donne une solution alternative qui vite cette d claration et r duit la taille de votre code Une classe simple sans accesseurs lt php require Entity php class VidCam extends Entity Mes propri t s protected name protected description protected shutterSpeed protected irisRange Declaration d un accesseur specifique public function setShutterSpeed value if is_numeric value this gt shutterSpeed int value return true return false vidCam new VidCam vidCam gt setName HVX 200 vidCam gt setShutterSpeed 50 echo Nom vidCam gt getName lt br gt n echo Vitesse d obt vidCam gt getShutterSpeed gt Optimiser le mod le pour PHP Que contient la classe Entity pour rendre disponibles les accesseurs lt php abstract class Entity gt Cette m thode peut tre red clar e dans les classes d riv es pour effectuer des contr les sur les affectations protected function set property value this gt property value return true Cette m thode peut tre red clar e dans les classes d riv es pour effectuer des op rations sur les renvois de valeurs protected function get property return this gt property Interception des accesseurs public function __call method attrs prefix substr method 0 3 suffix chr ord substr method 3 1
241. antage d informations sur LDAP sont disponibles au chapitre 7 Certains protocoles sp cifiques ont aussi des applications administration d di es documents bas s sur XML GEDCOM etc Lorsque vous utilisez un format de donn es sp cifique connu ayez le r flexe d effectuer une recherche dans une base de scripts ou un moteur de recherche comme Google pour voir s il existerait pas une application d administration d di e EJ Organisation du projet conventions et outils PREMI RE PARTIE Figure 6 4 Un outil d dition visualisation peut faire gagner du temps 0000000000000000000000000000000 S000000 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXJ XXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX see XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 290000000002 XXXX XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX XXXX 1 _2AXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX diteurs courants Ces diteurs voluent en permanence On peut les trouver facilement sur Internet par linterm diaire dun moteur de recherche De nombreuses biblioth ques de scripts et applications PHP peuvent galement aider trouver l outil adapt Voi
242. ants sont disponibles au sein de la plate forme PHP et effectuent des transformations de documents XML en tableaux Impl mentations possibles L outil passe partout pour faire de la transformation XML en tableaux est SAX Son seul inconv nient est qu il mest pas toujours agr able mettre en uvre DOM et SimpleXML permettent aussi d laborer les m canismes de cr ation de tableaux leur mani re Nous reviendrons sur ces deux outils dans la section suivante consacr e aux passages de documents XML vers les objets Tableau 11 8 Outils existants pour passer des documents XML aux tableaux Outil Description Utilit de la transformation WDDX Permet de s rialiser et d s rialiser des don C est l op ration de d s rialisation qui nous n es Les donn es sont s rialis es en XML int resse ici Elle tient compte d un format puis restitu es sous forme de tableaux ou XML sp cial d crit par la DTD de la norme d objets dans une certaine mesure WDDX SOAP SOAP et XML RPC sont des protocoles de ser Il est envisageable de faire de la transmission XML RPC vice web bas s sur le format XML de tableaux via les services web SOAP ou XML RPC SAX Cet outil est un parseur s quentiel bas sur un Il est possible gr ce ce parseur de g n rer syst me de handlers des tableaux sp cifiques partir de donn es XML Il existe galement une fonction qui transforme un document XML en deux tableaux contenant d un c t de
243. ar exemple un proxy SOAP peut g rer les appels au serveur en mettant en uvre une politique d acc s et de cache adapt e Les requ tes qui n attendent pas de r ponse peuvent galement tre stock es dans un pool qu une t che planifi e se charge de dig rer au lieu d tre ex cut es la vol e au d triment des performances EJ Mod lisation en UML pour PHP DEUXI ME PARTIE RETENIR Exploiter une application existante sans la modifier avec proxy et fa ade Si vous exploitez une application existante dans le cadre de vos d veloppements et que vous avez besoin de la modifier la pire solution consiste toucher au code source En effet lorsque vous serez amen mettre votre ressource applicative jour vos modifications seront cras es Une solution plus p renne consiste utiliser la classe Proxy pour simuler votre ressource et modifier son comportement Le motif fa ade peut galement tre utile pour faire appel aux ressources bas niveau d une application Les motifs de comportement La cha ne de responsabilit Chain of responsability Principe de la cha ne de responsabilit Une classe abstraite HandTer sert de mod le plusieurs classes ConcreteHandler des tin es prendre des d cisions Ces diff rentes classes peuvent se succ der si la pre mi re ne peut prendre la d cision elle passe le relais la deuxi me et ainsi de suite Mise en pratique Les classes Pr sident V
244. ar la base et continue cro tre en puissance au fur et mesure des ann es Cyril Pierre de Geyer est pionnier de la d mocratisation de PHP en France Il est l origine de nombreuses actions et associations telles que l AFUP Association fran aise des utilisateurs de PHP le Forum PHP qui a lieu tous les ans Paris PHPTeam PHPFrance et Anaska Formation Il est galement co auteur d un ouvrage pratique sur PHP 5 A PHP 5 Avanc 2 dition d ric Daspet et Cyril Pierre de Geyer aux ditions Eyrolles Alors que d autres plates formes ne laissent pas de choix leurs d veloppeurs sur la ligne de conduite adopter PHP est lui un champion de la libert De la syntaxe au mod le en passant par les solutions techniques le choix est incroyablement vaste PHP est il adapt vos besoins Ta CHAPITRE 1 Une n cessit un minimum de connaissances en g nie logiciel Savoir afficher du texte et faire des boucles avec PHP est quasiment imm diat Mais PHP ne se limite pas cela il int gre un v ritable langage de programmation proc dural et objet PHP ne sait pas tout faire PHP ne sait pas construire une architecture logicielle d terminer algorithme optimal ou exploiter le d bogueur la place du d veloppeur Les d butants en PHP peuvent avoir tendance se consid rer comme des d ve loppeurs apr s avoir crit un livre d or Faites attention de bien faire la part des choses les bons d v
245. ar on ne ma trise r ellement que ce que Pon a d velopp C est pour cette raison en particulier que la plupart des quipes qui pratiquent une m thode agile dont XP sont limit es une dizaine personnes En outre il se peut que l approche ne soit pas accept e par tout le monde en particu lier par un sp cialiste auquel on confierait une partie critique de l application ou un d veloppeur qui souhaite tout prix s attribuer les m rites de tout ou partie de l impl mentation Dans un cas comme dans l autre il faudra veiller ce qu ils accep tent et comprennent l int r t de la d marche Le travail en bin me Le travail en bin me est une pratique importante d XP r pondant la d marche de rentabilit de qualit et de partage des connaissances Elle consiste mettre en place un roulement de paires de d veloppeurs qui travaillent ensemble sur le m me poste Une paire est constitu e d un pilote et d un copilote e Le pilote est au commande du poste il crit le code et manipule les outils la mani re d un d veloppeur solo e Le copilote est loin d tre passif Il est charg des aspects strat giques du d velop pement en cours Il effectue une relecture continue du d veloppement il compile le code la vol e dans sa t te imagine de nouveaux tests propose de nouvelles solutions et donne son avis sur le travail du pilote Le travail en bin me appel galement pair programming par
246. ar une fonction qui affi che et logue l information x Remplac par une fonction qui affi che et logue l erreur x Remplac par le mot de passe MySQL de d veloppement Exemple de code de la version gabarit lt php Inclusion du gestionnaire de base LDAP g_include 1dapmanager Version production Remplac par un require ou un include Remplac par une ligne vide Remplac par une fonction qui affi che une page d erreur et logue le probl me et la pile d erreurs afin de pouvoir analyser par la suite Remplac par le mot de passe MySQL de production Fonction de r cup ration des informations d dition public function edit filter fields if _POST IdapForm 1 values this gt search dn filter if values count 1 f_error Echec d dition du formulaire f_debug Requ te return false C gt dn 1dapDNPeople filter title Assurer des d veloppements PHP performants et polyvalents ET CHAPITRE 14 Code pr c dent g n r pour la version d bogage gt lt php require_once debug_functions php Inclusion du gestionnaire de base LDAP debug_ include 1dapmanager php Fonction de r cup ration des informations d dition public function edit filter fields dn ou people dc fraternity dc local if 1 _POST IdapForm values this gt search dn filter if
247. arde du serveur de recette usr 1ocal bin save_rec sh sur le serveur de sauvegarde bin sh LOGDIR var log EXCLUDE exclude bak exclude tmp exclude old TARGETHOST preprod_server SYNODIR space save preprod date EUX Organisation du projet conventions et outils PREMI RE PARTIE echo lt synchronisation etc gt rsync rvt delete delete excluded SEXCLUDE TARGETHOST sysconf SSYNCDIR etc echo lt synchronisation usr local etc gt rsync rvt delete delete excluded EXCLUDE TARGETHOST conf SYNODIR usr_1ocal_etc echo lt synchronisation web gt rsync rvt delete delete excluded SEXCLUDE TARGETHOST web SYNCDIR web echo lt mise jour des droits gt chown R save_user save_ group SYNCDIR www tee a LOGDIR rsync log 2 gt amp 1 Le script pr c dent effectue une sauvegarde incr mentale minimale des trois par tages rsync du serveur de recette sur le serveur de sauvegarde Charge Padministra teur syst me d int grer cette routine dans la crontab t ches p riodiques de cr er les utilisateurs et groupes n cessaires d installer le client rsync et d int grer la g n ration des logs un syst me de rotation afin d viter des d bordements G n ration des archives Le packaging d applications peut rendre des services tr s utiles l h
248. ase s de donn e s n cessaires au fonctionnement de l applicatif ainsi qu une reconfiguration des droits d acc s SQLite est un petit SGBD permissif d nu de contr le de type il est par exemple possible de stocker une cha ne de caract res dans un champ d clar entier Il est performant en lecture en revanche il verrouille la base en criture Pourquoi choisir SQLite Une base de donn es SQLite est en quelque sorte un fichier am lior permettant d organiser et de trier des informations tr s rapidement SQLite est id al pour g rer des mises en cache complexes ou pour toute probl matique n cessitant un stockage peu fr quent d informations structur es et fortement consult es 166 Organisation du projet conventions et outils PREMI RE PARTIE Comparatif des SGBD support s par PHP Il existe d autres extensions d acc s natif aux SGBD avec PHP Voici un petit tableau mettant en avant les points forts et les points faibles de chaque SGBD support par PHP Nom DB DB2 DBA IBM DB2 Firebird Interbase Ingres Il MaxDB MySQL mysql mysqli Oracle Ovrimos SQL PostgreSQL Sesam SQLite SQL Server Tableau 7 2 Les SGBD support s par PHP Avantages SGBDR hautes performances et faible con sommation de ressources syst me SGBDR commercial performant concurrent d Oracle et SQL Server Proc dures stock es et triggers performances compatibilit ANSI
249. asse public function __construct ini_file this gt iniFile ini_file if file _exists ini_file this gt iniValues parse_ini_file ini_file Met jour le fichier ini chaque modification dans iniValues private function writeConfig config Last update date d m Y H i s foreach this gt iniValues AS key gt value config n key value file_put_contents this gt iniFile config Modification d une valeur de configuration public function __set key value this gt iniValues key value this gt writeConfigO Optimiser le mod le pour PHP 207 CHAPITRE 9 Lecture d une valeur de modification Cette m thode peut tre compl t e par un chargement de la configuration chaque lecture au besoin public function __get key return this gt iniValues key config new IniConfig test ini config gt firstname Guillaume config gt lastname Pon on echo config gt firstname config gt lastname gt L ex cution de ce code renvoie la cha ne Guillaume Pon on Le contenu du fichier test ini est alors le suivant s il n existait pas avant le chargement de la classe Contenu de test ini apr s ex cution Last update 11 08 2005 19 01 44 firstname Guillaume lastname Pon on Surcharge de m thode Cette surcharge est assur e par la d claration de la m thode sp ciale __ca
250. assign var product_id value 23 include file product_video tpl assign var product_id value 45 include file product_book tpl include file footer_bluesky tp1 Les inconv nients d un langage sp cifique sont la n cessit de le ma triser et la perte de performance due son interpr tation Ce dernier point est relatif certains moteurs mettent en uvre une compilation de leurs templates vers PHP Simplifier et p renniser un d veloppement PHP EJ CHAPITRE 13 Avez vous besoin d une mise en cache La mise en cache n cessite beaucoup de ressources m moire et ou disque Si vous avez une gigantesque base de donn es qui volue fr quemment ce n est peut tre pas une bonne id e En revanche si vous avez un nombre limit de donn es fr quemment consult es la mise en cache peut devenir b n fique La fr quence de mise en cache est galement un param tre essentiel Si vos templates ne produisent jamais deux r sultats identiques la mise en cache ne servira rien sauf r duire les performances Dans le cas contraire si vos templates doivent produire de nombreux r sultats identiques la mise en cache vous pargnera des interpr tation redondantes et co teuses M THODE Mon moteur de templates ne dispose pas d options de mise en cache que faire Si vous voulez une mise en cache et que votre moteur de templates ne propose pas cette option pas de panique Il existe plusieurs so
251. ategory_id etc d finissent les contraintes e Le champ category_id de la table book est une cl trang re de la table category Dans notre exemple le champ qui correspond la cl trang re est du m me nom que le champ correspondant dans la table laquelle la relation fait r f rence Comme nous pouvons le remarquer la relation plusieurs plusieurs de notre mod le conceptuel de donn es MCD a n cessit la cr ation de la table redaction qui sert de liaison entre les tables book et author criture des requ tes de cr ation Une fois notre MPD mod le physique de donn es en main il ne nous manque plus qu le traduire en langage SQL Un MPD complet fournit toutes les informations n cessaires la cr ation de requ tes de cr ation Choisir les ressources et les supports de donn es CHAPITRE 7 Figure 7 7 Un mod le physique de donn es simple MPD book_id book_id cat id int book title varchar 127 author id int resume text book_id int nb_pages int date datetime category_id category_id author_id author_id author_id int category_id int category_title varchar 127 description text firstname varchar 127 lastname varchar 127 varchar 20 boolean M PD varchar 250 Exemple de requ te de cr ation Cr ation de la base de donn es CREATE DATABASE eyrolles DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci Cr ation de la table book CREATE TABLE
252. ator Toutes ces interactions entre les champs peuvent tre g r es dans les objets qui les repr sentent Toutefois s il y en a beaucoup cela va vite augmenter la complexit des objets L id e du m diateur sera donc comme le montre la figure 10 16 de centra liser la politique de communication au sein d un groupe d objets les Colleague dans un objet de m diation le Mediator Le m mento Principe du m mento Un objet Memento sauvegarde l tat d un objet afin de pouvoir le restaurer par la suite Les motifs de conception Design Patterns CHAPITRE 10 Mise en pratique Par exemple un objet Parametres est cr avec des param tres initiaux puis modifi par le biais d une fonction enregistre_ parametre Toutefois nous voulons finale ment restaurer les param tres initiaux nous faisons donc appel la m thode restore du m mento charg d enregistrer l tat initial de Parametres Ce motif est rarement utilis en PHP Un objet Memento peut ventuellement tre stock en session afin de retenir un tat ou plusieurs d un objet couramment mani pul param tres utilisateur etc L observateur Observer Principe de l observateur Un observateur est l aff t d un signal de la part des diff rents sujets auxquels il est attach Son r le est d effectuer des op rations lorsque survient un v nement Figure 10 17 UML Principe Le motif observateur Sujet AIRES Subject
253. besoins Leur participation doit tre r guli re et active En fonction des projets et de la m thode employ e ils peuvent tre un groupe d uti lisateurs finaux l quipe d organisation le client dans le cas d XP en particulier une quipe senior etc Mod lisation collective et mod les ouverts Un mod le sert formaliser des id es de mani re les exposer d autres personnes Il sert galement rendre explicite une vision commune Cette implication n cessite la participation et l approbation de l ensemble des acteurs du projet Le mod le doit donc tre ouvert tous y compris au client Il favorisera une com munication agile transparente et honn te entre les diff rents acteurs du projet Optimiser le mod le pour PHP ER CHAPITRE 9 Utilisation des bons mod les Chaque mod le est optimis pour un type d application donn Un diagramme d activit UML est un bon choix pour d crire un processus m tier En revanche il est judicieux de choisir un mod le physique de donn es pour la structure de votre base de donn es Tout l art sera de s lectionner le mod le le plus adapt ce que vous devez d crire c est dire celui qui exposera en tr s peu de mots et le plus simplement possible une information pertinente Un diagramme de 50 mots bien plac s dans un mod le adapt est g n ralement plus facile lire que 500 lignes de code Changer de mod le Si l utilisation d
254. bjet fig Exemple si vous travaillez avec plusieurs applications qui exploitent des produits de voyage vous pouvez rendre votre classe m tier produit de voyage assez g n rique pour l adapter l ensemble de vos applications m me si de l une l autre il existe quelques diff rences Ainsi les m canismes qui exploiteront votre objet n auront pas de mises jour sp cifiques subir Exploiter les interfaces les classes abstraites et la notion d h ritage Les classes abstraites et interfaces sont une tape de plus dans la s ret de program mation Elles permettent de s assurer que certains objets impl mentent des m thodes pr d finies afin de les utiliser sans craindre que l objet ne fasse pas tout ce qui tait pr vu Les interfaces peuvent tre vues comme des contr les qualit v rifier que les objets correspondent bien aux sp cifications Le mot cl final associ une m thode ou une propri t permet l inverse s assurer qu il ny aura pas de red finition par la suite dans une classe d riv e Les interfaces et classes abstraites permettent non seulement la r utilisation travers l exploitation d un seul algorithme dans plusieurs objets mais aussi la compatibilit entre des classes similaires Il est possible galement de typer un param tre de fonction ou de m thode de mani re ce que seul l objet attendu soit admis comme l illustre la figure 11 16 Exploi
255. bles en objets m tiers Les objets m tiers sont de type ensit voir chapitre 8 Les diff rents types de classes D finir des conventions pour la conception d applications PHP RE CHAPITRE 2 RETENIR viter les redondances avec MVC Il est bien connu que le copier coller de code n est jamais recommand Notez que le mod le MVC a t con u pour viter ces redondances de code en tenant compte des erreurs courantes de nombreux d ve loppeurs Gardez bien l esprit par exemple qu un l ment DAO est charg de l acc s direct une ressource sp ci fique et doit tre le seul avoir ce privil ge L art et la mani re de manipuler les donn es de cette res source doit tre trait dans le mod le l mentaire associ Dialogue entre les diff rents l ments d un mod le MVC Jusque l vous devez avoir compris l essentiel sur MVC Afin de bien assimiler le concept nous pouvons maintenant imaginer le parcours d une requ te utilisateur Le tableau 2 1 d taille les interactions entre les l ments d taill s d un mod le MVC Ces interactions sont repr sent es par un num ro qui correspond un ordre de trai tement plus ou moins exhaustif dans la figure 2 7 Tableau 2 1 tapes d une requ te Mod le MVC N Description de l tape 1 L utilisateur effectue une action qui est envoy e au contr leur frontal 2 Le contr leur pour ses diff rents traitements fait appel divers services initia
256. book book_id INT NOT NULL category_id INT NOT NULL book_title VARCHAR 127 NOT NULL resume TEXT NOT NULL nb_pages INT NOT NULL PRIMARY KEY book_id C5 Vos requ tes de cr ation seront bien entendu li es au SGBD que vous souhaitez uti liser L exemple ci dessus concerne le SGBD MySQL Les requ tes ont t g n r es gr ce l application PhpMyAdmin que vous trouverez facilement sur Internet Organisation du projet conventions et outils PREMI RE PARTIE Outils de design et de g n ration Il existe de multiples outils pour mod liser les bases de donn es Cela peut aller du simple tableau blanc id al pour travailler en quipe au logiciel sp cialis qui permet de g n rer un MPD partir du MCD puis les requ tes de cr ation partir du MPD Le plus populaire du moment et aussi l un des plus on reux est le fameux Power AMC dit par Sybase Cette application permet toutes sortes de mod lisations g n rations et Reverse Engineering Il s adapte galement quasiment tous les SGBD du march gt http www sybase com products developmentintegration poweramc CULTURE Reverse Engineering Le Reverse Engineering r troing nierie ou ing nierie inverse est la proc dure qui consiste d terminer partir d un objet fini les m thodes et techniques utilis es pour sa cr ation Dans le domaine des outils gratuits il existe un
257. bre de pages diff rentes que peut cr er votre application est extr mement lev et vous mettez en cache toutes vos pages Faites attention ce que le nombre de fichiers de cache ne grossisse pas trop 14 Assurer des d veloppements PHP performants et polyvalents travers quatre disciplines nous allons aborder dans ce chapitre l art et la mani re de rendre des d veloppements fiables et communicants L interop rabilit des d veloppements dans un syst me d information aux technologies h t rog nes est un point fort de la plate forme PHP Nous aborderons les diff rentes possibilit s d interaction offertes par PHP travers les couplages l ches et les cou plages forts Les services web sont aujourd hui incontournables Ils deviennent une solution uni verselle d interaction entre plusieurs applicatifs quelles que soient leurs caract risti ques techniques La g n ration de code est une pratique de plus en plus ma tris e qui peut rendre de grands services Nous aborderons ici les bases de cette discipline et verrons comment travers des techniques de g n ration partielle il est possible d am liorer la mainte nance et les caract ristiques d une application La mise en cache pour finir est actrice de l optimisation des performances et des co nomies de ressources Nous aborderons ici les bonnes pratiques et les pi ges de la mise en cache Bonnes pratiques de d veloppement en PHP TROISI
258. c un fichier exemple alors que son utilisation dans le cadre d un projet d envergure r v le toute sa puissance En revanche il serait dommage de passer c t d un diteur de qualit parce que l on na pas pris la peine de se renseigner Vous trouverez dans la suite de ce chapitre des m thodes et des outils permettant dans un premier temps de s lectionner les diteurs potentiellement id aux Cette d marche permettra d effectuer des tests approfondis sur une s lection r duite de logiciels plut t que de s taler sur des tests approximatifs en balayant de nombreux diteurs Choisir un diteur EDE CHAPITRE 5 Un diteur complet Ici complet ne signifie pas rempli de fioritures inutiles mais qui dispose des fonction nalit s utiles pour atteindre les objectifs voulus Le tableau 5 1 d crit la plupart des fonctionnalit s utiles que l on peut trouver dans un diteur PHP Servez vous de cette liste pour comprendre la d finition des termes abord s dans le test en fin de chapitre Fonctionnalit Coloration syntaxique Indentation automatique L auto compl tion L analyseur syntaxique Le g n rateur de documentation L explorateur de classes et de fonctions L int grateur CVS Subversion Le client FTP Le gestionnaire de t ches Les templates de code Tableau 5 1 Fonctionnalit s utiles d un diteur PHP Description Elle am liore consid rablement la lecture du code en y ajoutant
259. c_clear_cache 289 apc_delete 289 apc_fetch 289 apc_store 289 APD Advanced PHP Debugger 308 compatibilit 308 documentation officielle 311 KCacheGrind utilisation avec 311 pile d appels 309 pprofp 310 trace 309 apd_set_pprof_trace 308 application caract ristiques d exploitation 394 installation production 392 mises jour production 392 packaging 393 surveillance 422 arbre motif composite 234 architecte 48 architecture simple et performante 28 456 Best Practices PHP assembleur 264 ATK 5 framework 153 attaque par injection 161 avantages de PHP par G rald Cro s 444 par Zeev Suraski 440 avis d expert de Cyril Pierre de Geyer 12 AWF framework 153 axes de mod lisation 182 B balise XML 255 bande passante utilisation 294 base de donn es abstraction 167 design 172 diteurs 139 PgAdmin 140 PhpMyAdmin 139 PhpPgAdmin 140 recherche 141 SQLiteManager 140 embarqu e 165 g n ration de code 367 MCD 169 mod le cr ation du 169 mod lisation 169 outils de mod lisation 172 basename 293 biblioth que d finition 28 bin me XP 37 Biscuit framework 153 blacklist 412 Blueshoes framework 153 boucle utilisation 295 exemple pratique 295 branche nommage 62 bridge motif 233 BSD formatage 56 builder motif 228 C C PHP interaction 346 cache template de 334 via proxy 237 cache mise en 369 APC mise en pratique 376 code compil 375 des donn es en m moire 376 haut niv
260. ce qui lui aussi rend des services des utilisateurs travers un r seau un serveur HTTP un serveur FTP S curiser un serveur Dans l ordre d importance voici une petite liste de points travailler pour s curiser un serveur destin tre reli Internet e Installer et configurer un pare feu L absence de pare feu est la cause la plus cou rante des probl mes e Mettre jour les programmes critiques afin que les failles de s curit connues soient colmat es temps le serveur HTTP les serveurs de courrier lectronique PHP les serveurs de donn es et les d mons qui tournent sous un utilisateur avec pouvoir Unix e V rifier les routines de maintenance notamment la rotation des logs qui assure l quilibrage de l espace disque utilis par les journaux Ces routines sont Pins tallation de la plupart des syst mes Unix d j en place 4 Qu est ce qu un utilisateur avec pouvoir Sur les syst mes Unix Linux BSD Solaris et certains syst mes Windows il est possible de d finir plu sieurs utilisateurs dot s d un certain nombre de droits Ces droits sont souvent li s au syst me de fichiers et d finissent o l utilisateur peut aller et ce qu il peut faire Un utilisateur avec pouvoir a la possibilit d agir sur des parties critiques du syst me donc potentiellement de le d grader Il est souvent recommand que chaque d mon service soit lanc avec un utilisateur diff rent don
261. ce 420 T tableau 253 cl s et valeurs 254 convertir des donn es en 253 d bogage 255 d claration 254 dimensions 254 liste des fonctions 255 transformer du XML en 278 transformer un objet en 277 vers objet 281 vers XML 283 t ches automatisables 137 tag XML 255 tar archivage 416 t moignage G rald Cro s 443 Matthieu Mary 451 Perrick Penet 446 Romain Bourdon 449 Zeev Suraski 440 template 332 compil 334 et motifs de conception 333 exemple de gabarit 333 formatage 57 mise en cache 334 moteur 275 332 test pilotage par 35 pour la maintenance 29 unitaire 35 314 bonnes habitudes 314 espace de travail 314 exemple pratique 315 testeur 48 top LDAP 176 trace analyse outils 312 d bogage 143 exception 300 tracker 48 traduction table de g n ration 364 trigger_error 302 try 300 e cl s et valeurs tableau 254 de donn e conversion 298 structure C 299 U UDDI Universal Description Discovery amp Integration 355 uid user ID LDAP 177 UML2PHP5 199 357 unicode 60 user_error 302 UTF 8 60 utilisateur avec pouvoir 407 V valeur des m thodes agiles 33 passage par 287 value structure C 299 Es variable d environnement HTTP 383 structure interne 299 version nommage 60 stabiliser 63 versionning branche 63 fusion 63 merge 63 principes 60 suppression 61 visibilit classe 264 vue MVC 40 41 W WACT Web Application Component Toolkit framework 156 WDDX 275 d fi
262. ces car il n est pas requis d tre administrateur syst me qualifi pour installer et utiliser l outil 48 D finition des exigences pour l exploitation QUATRI ME PARTIE e D installation d outils comme le monitoring des applications le syst me de ges tion du cache les t ches planifi es les analyseurs de performances etc L instal leur initial s occupe de d ployer ces outils pour vous e De ressources syst me gr ce de nombreuses fonctionnalit s d acc l ration des performances et de mise en cache Dans l industrie ces conomies se traduisent en euros ou en dollars C est vous de calculer les b n fices offerts par l environnement en effectuant les quelques calculs ad quats Afin de vous aider dans cette d marche voyons d un peu plus pr s les avantages et les inconv nients du produit Avantages et inconv nients de la Zend Platform Performances et qualit La gestion de la qualit et des performances des applications est un point fort de la Zend Platform Un premier tour d horizon sur l interface d administration laisse appara tre de nombreux outils de param trage et d analyse de qualit et de perfor mances Figure 17 2 Page principale de la Zend Platform Zend Platform zend Central COLATO TENTE UT TETE TI ASUS TPE Logout Console ver Status Preferences ent r Manager end Central 23 May 2005 10 10 46 Logged in at Admin Slow Function Execut 14 M
263. cheGrind web workspace code xdebug php cachegrindout 21963 zioixi Copie d cran de l outil Es Blaise one 4 WinCacheGrind Er Pnebjworkspace code xdebug pro tinlo x lweb work space code xdebug php meb workspace code xdebug php o mn Fie web workspace code edebug 1 Ga oro fle_get_ contente Sol time Cumulotive time 2 167ms 100 00 gt UnebyUne Over Aaf T F Beguda ergression de MyClarsomMethod E man AEs 2167ms Afms 2167mt Aa MyClass getProperty Om 108m Om 1036m G oto fle_get_contents 1 066ms 1066ms 1 066ms 1 06 ms Goto slcen 1002m 1002m Sum of total se time 2 167ms 100 00 1 Sum of cals 7 Nua Set Cum Caledby Comediiom 1 Oams Dams Imain Jweb wcdkspace code sdebu 2 01m Oime main Jweb wodkspace code xdebug Fe LI Flocated memory 115 032 bytes Pour installer WinCacheGrind il vous suffit de r cup rer linstalleur sur Internet Configurez ensuite Xdebug pour qu il fournisse des fichiers de traces et ouvrez ces fichiers avec WinCacheGrind R F RENCE WinCacheGrind http sourceforge net projects wincachegrind KCacheGrind Les heureux possesseurs d Unix Linux FreeBSD ont leur disposition un outil unique et tr s pratique KCacheGrind est parfois capricieux installer en revanche lorsqu il fonctionne d boguer devient un plaisir KCacheGrind est une application KDE qui s installe comme
264. choisir Cette section vous aidera mieux choisir les formats de donn es que vous pouvez utiliser pour stocker manipuler ou transmettre vos donn es Ce choix d pendra de vos besoins et sera d terminant pour votre projet que ce soit en termes de perfor mances facilit de maintenance ou en possibilit s d interop rabilit XML XML existe depuis longtemps Aujourd hui plus que jamais il est omnipr sent On l utilise principalement pour de l change de donn es du param trage et du stockage Le format XML est un standard sur lequel repose de nombreux langages et protocoles Figure 7 9 Quelques langages et protocoles bas s sur XML SOAP XHTML XML RPC DOCBOOK SVG XSL MathML XML XFORMS Organisation du projet conventions et outils PREMI RE PARTIE XML et ses applications L utilisation de XML avec PHP devient de plus en plus courante Avant d analyser l utilisation que l on fait de XML il est int ressant de conna tre les raisons qui ont conduit ce choix e XML permet un stockage structur et hi rarchique en arbre de l information Ceci est tr s pratique pour maintenir les relations entre les donn es e XML est un format texte facile diter et transmettre Cela ouvre des perspec tives d interop rabilit et facilite l dition des donn es e XML poss de de nombreux outils de lecture et d criture rapides et fiables tels que SAX DOM ou SimpleXML ce qui rend sa manipulati
265. ci quelques exemples d outils actuellement disponibles pour manipuler des for mats de donn es sp cifiques PhpLdapAdmin un outil tr s pratique pour lire et crire dans une base LDAP Permet galement de lister les classes de donn es et leurs descriptions d taill es PhpDocumentor un outil tr s pratique qui parse une application PHP et ses com mentaires phpdoc et produit une documentation aux formats HTML ou PDF Php iCalendar un parseur visualiseur de fichiers iCal calendriers MagpieRSS un parseur de flux RSS Php Palm Database une application pour lire crire et modifier des fichiers PDB Palm OS Database Quelques formats de donn es g r s par une ou plusieurs extensions PHP que vous trouverez dans la biblioth que PECL http pecl php net exif un format de donn es permettant la lecture et l criture d informations incrust es dans les images de la plupart des appareils photos num riques du mar ch Exif donne des informations sur lappareil utilis et les caract ristiques de prise de vue ouverture focale etc LDAP un protocole sp cifique aux donn es repr sentant des personnes morales et physiques stock es dans une hi rarchie bz2 un format de compression largement utilis sous Unix rar un autre format de compression zip galement un format de compression populaire sous Windows Choisir les outils d administration 18 CHAPITRE 6 e id3 informations conten
266. ciel ce n est pas seulement produire des milliers de lignes de code c est un travail de r flexion de mod lisation c est une quipe des m thodes des outils mais aussi de l entretien et des volutions travers ce livre que j ai eu le plaisir de lire et relire jai vu appara tre petit petit la r ponse aux questions que tout informaticien doit se poser pour r aliser une applica tion web d envergure PHP est un outil exceptionnel multiples facettes d un c t une programmation souple et facile celle qui a fait son succ s d un autre c t une plate forme compl te adapt e des projets critiques Avec PHP ce n est pas la technologie qui d cide mais l informaticien Vous souhaitez d velopper vite un petit logiciel Inutile alors d appliquer les grands moyens vous pouvez travailler en proc dural suivant une logique page par page Si au contraire vous souhaitez d velopper un outil complet avec toute votre quipe libre vous alors de d finir un cadre plus strict n cessaire sa bonne r alisation C est dans cette derni re optique que ce livre a t pens et r alis vous offrir la pos sibilit de passer la vitesse sup rieure avec PHP et d attaquer un d veloppement avec toutes les cartes en main Best practices PHP est un livre qu il vous faut absolument consulter pendant toutes les tapes d un projet Il s adresse tant aux architectes qu aux chefs de projets et au
267. cl php net gt http talks php net Choix d un framework de d veloppement Un framework ou cadre de travail fournit des ressources des outils des m thodes de d veloppement et des conventions au service d une ou plusieurs applications Il est en quelque sorte un socle pour vos d veloppements Figure 7 2 Applications bas es sur un framework App 3 App App gt App 1 App2 Framework PHP Organisation du projet conventions et outils PREMI RE PARTIE Utilit d un framework Il peut y avoir plusieurs raisons de se lancer dans l adoption ou le d veloppement d un framework Avant de choisir il convient de se poser la question de son utilit Voyons d abord quels sont les apports et les contraintes de l alternative framework Les apports e Un framework met disposition un ensemble de ressources classes objets qui peuvent tre partag es entre plusieurs applications Il accompagne les efforts de r utilisation du code e Un framework unifie les conventions et les m thodes de d veloppement en fixant un cadre et une organisation commune pour chaque application Il favorise l homog n it de l criture et la compatibilit des briques logicielles entre elles e Un framework peut galement apporter des outils de maintenance compatibles avec l ensemble des programmes qu il supporte Les contraintes e Une application qui d pend d un framework poss de le d savantage
268. commandent l utilisation de m taphores permettant de mieux cerner le r le de certai nes fonctionnalit s Le monde de l informatique poss de d j beaucoup de m taphores c l bres une architecture client serveur une souris une bulle d aide etc Ces m taphores ne sont pas toujours videntes trouver mais elles ont l avantage d tre faciles retenir et de s adapter dans le fond ou dans la forme aux fonctionnalit s dont elles font r f rence XP et le travail d quipe Les pratiques collaboratives de la m thode XP sont nombreuses Travailler en quipe avec XP va au del de la m thode c est galement un esprit Nous ne sommes plus dans une logique de responsabilit individuelle du code mais dans une d marche enti rement collective Chaque acteur est responsable de l int gralit de l application et doit tre capable d intervenir sur nimporte quelle partie Les avantages de cette approche sont multiples Le partage des connaissances offre une meilleure r activit et une mise niveau efficace des intervenants Le travail D finir des conventions pour la conception d applications PHP RE CHAPITRE 2 plusieurs permet une relecture syst matique donc de meilleures garanties de qualit et de performances Limites du travail en quipe avec XP et les m thodes agiles Dans le cas de projets de grande taille il sera difficile pour chaque intervenant de ma triser compl tement l ensemble du code c
269. commu naut PHP notamment fran aise En quoi consistait votre dernier projet professionnel d velopp en PHP Mon dernier projet a consist pour Travelsoft a d velopper un front office client d un service web pour un site de vente en ligne de s jours packag s Quelles difficult s avez vous rencontr es lors de ce d veloppement Au del du c t front office notre client souhaitait une architecture modulaire qui permette la mise en place de plusieurs sites en ligne partir d une m me architecture Nous nous sommes orient s vers une solution s approchant d un framework qui est maintenant repris dans un autre projet et nous fait gagner un temps consid rable Qu est ce que ce d veloppement vous a apport de positif Nous avons pu interconnecter diff rentes technologies notamment Java par linter m diaire des services web Aujourd hui je suis encore surpris par tout ce qu il est possible de faire en PHP Que vous a apport PHP par rapport d autres technologies Le planning de d veloppement tait relativement court PHP nous a permis de d velopper ce projet plus rapidement qu en d autres technologies ma tris es au sein de Travelsoft On arrive tr s vite un r sultat concluant avec PHP 452 T moignages CINQUI ME PARTIE Quelles sont selon vous les qualit s requises pour tre un bon d veloppeur PHP mon avis pour tre un bon d veloppeur
270. contenu HTML PDF texte etc et d un m ta langage destin tre traduits en fichiers PHP qu on peut inclure include comme tout autre fichier contenant du code C est le cas du moteur Smarty e Les m canismes d acc l ration et d optimisation parsent un code et le remanient selon des r gles bien pr cises Nous verrons en quoi consiste cette discipline plus loin e L automatisation de certaines t ches peut galement tre envisag e par exemple la g n ration automatique de tests unitaires Assurer des d veloppements PHP performants et polyvalents 361 CHAPITRE 14 e La personnalisation d une application consiste consid rer ses sources comme un grand gabarit qui peut tre traduit pour chaque client pour une langue ou un environnement donn EXEMPLE Autog n ration minimale Ex cutez le code suivant en ligne de commande et voyez ce qui se passe usr local bin php f lt php define C COUNTER 1 echo J ai t appel COUNTER fois n code file_get_contents _FILE__ eline define COUNTER d cline define COUNTER CCOUNTER 1 code preg_replace eline cline code file_put_contents __FILE__ code gt La sortie indique J ai t appel 1 fois puis J ai t appel 2 fois et ainsi de suite Ce code modifie chaque passage sa constante COUNTER directement dans son propre code source
271. core En analysant notre jeu de tests nous pou vons r cup rer les m thodes en gras que nous avons pr vues d utiliser pour acc der ConfigManager Cette d marche est int ressante car elle permet de construire l architecture de notre classe d un point de vue ext rieur C est les solutions techniques qui devront r pondre aux aspects pratiques et non l inverse De nombreux projets se compli quent inutilement parce que les aspects pratiques abord s ult rieurement sont d pen dants des solutions techniques Suite notre analyse le squelette de la classe ConfigManager se dessine tout seul Fichier src ConfigManager php lt php class ConfigManager Chargement du fichier de configuration public function __construct config_ file Renvoi d une valeur public function getValue key Ajout d une nouvelle valeur public function add key value Enregistrement du fichier public function save gt Une fois ce travail effectu la classe de tests affiche une liste d erreurs en rouge comme l illustre la figure 12 12 Il ne nous reste plus qu compl ter notre classe ConfigManager avec pour objectif de passer l ensemble des tests avec succ s Assurer la qualit d un d veloppement PHP Fichier src ConfigManager php compl t lt php class ConfigManager gt Fichier de configuration private config private configFile Chargement du fichier de confi
272. d tre compatible avec les caract res 0 127 des jeux ANSI La version 5 2 de PHP est pr vue pour tre enti rement compatible UTF 8 Il est de bon ton de choisir UTF 8 comme jeu de caract res par d faut pour l avenir de votre code et de vos donn es Nommage des versions Toute personne ayant d j travaill en quipe sur un projet PHP conna t cet outil c l bre et pratique qu est CVS Concurrent Version System ou Subversion son suc cesseur Ce programme permet de partager du code source entre les membres d un m me projet Le principe est simple chaque modification effectu e par un d veloppeur fait l objet d un enregistrement dans la base appel e d p t de donn es ce qui g n re syst mati quement une mont e de version Il y a donc autant de mont es de version que de modifications effectu es sur un m me fichier Chaque nouvel enregistrement appel galement commit fait l objet d une compa raison avec la version la plus r cente puis d un stockage des modifications accompagn de la date de l action et de diverses informations permettant de g rer le suivi du fichier Quelques rappels sur les principes du versionning un instant votre application aura atteint une tape que vous allez vouloir analyser et conserver Il est alors temps de prendre un clich de votre code source Ce clich ou tag permettra par la suite de r cup rer le code de votre application tel qu il tait
273. d pend du probl me et de l implication que l on peut avoir dans sa r solution Il existe plusieurs solutions e en parler aux contributeurs et aux d veloppeurs travers les forums et les listes de diffusion mises disposition e proposer une contribution aupr s du PHPGroup e s adresser des sp cialistes qui sauront vous r pondre rapidement RESSOURCE Trouver du support sur PHP Le lien suivant est un bon point de d part pour trouver des contacts gt http www php net support php EE Best Practices PHP PARTICIPER Faire partie d un r seau d utilisateurs professionnels de PHP En France l association AFUP Association fran aise des utilisateurs de PHP regroupe un grand nombre de professionnels partageant r guli rement leurs exp riences et organisant des rencontres li es l utili sation de PHP en entreprise Si vous avez un probl me technique ou des questions li es l utilisation de PHP vous pouvez galement participer un forum de discussions ou vous abonner un journal sp cia lis tel que Direction PHP AFUP http www afup org Forum Nexen http www nexen net forum Direction PHP http www directionphp biz Le parcours de PHP L historique complet de PHP ainsi qu un mus e mettant disposition les toutes pre mi res versions de la plate forme est disponible sur le site officiel l adresse suivante http www php net manual fr history
274. d application PHP de checkstyle PhpCheckStyle http www spikesource com projects phpcheckstyle Choisir les outils d administration CHAPITRE 6 Quelques outils comme PHP Formatter et certains diteurs comme Eclipse per mettent de ranger le code pour qu il soit plus lisible Plusieurs diteurs comme Zend Studio et Eclipse effectuent galement des contr les sur le code et proposent des rec tifications Par exemple Zend Studio vous avertit lorsque vous mettez une assigna tion dans une condition if var 12 qui pourrait tre confondue avec une comparaison if var 12 Le rapport de performances Les outils de tests comme SimpleTest et PHPUnit mettent en place des m canismes qui permettent d archiver les temps d ex cution des requ tes et de leurs actions l mentaires Il est alors facile de mettre en place une interface permettant de visualiser des statistiques tel que le montre l exemple de la figure 6 8 d tails de performances d une requ te utilisateur Figure 6 8 Un rapport de performances d une requ te utilisateur index php p 23 temps d ex cution moyen en ps 0m include header ph i 1 120 php valuation perf bon make_menu nbr total de requ tes 546 4 023 i 4756 get_title rang de la requ te 56 ea L get_content nombre d appels 2 45 10 548 rang 16 me make_stats i 14 378 Requ te liste Requ te incl
275. d en t te Les tags de code PREMI RE PARTIE Tableau 2 3 l ments constituants les conventions de formatage Description Retrait que l on doit observer pour marquer l int rieur d une structure fonction boucle condition Nombre de caract res maximum que peut contenir une ligne de code Nombre de lignes maximal occup par une fonction Le format de la ligne de d claration d une fonction ou d une classe function nomFonction C arguments Les r gles d criture d une structure if for while criture des op rateurs d affectation et de comparaison et de ce qu il y a avant et apr s l ments non interpr t s facilitant la lec ture du code par des explications crites Fournissent des informations sur la nature du projet et le contenu du fichier Tags de d claration de code PHP lt php gt Conventions de formatage courantes Exemple inspir de PEAR L indentation est compos e de 4 espaces Faites attention ce que votre diteur uti lise des espaces et non des tabulations La ligne de code est limit e 80 caract res I n y a pas de limite sur la taille des fonc tions Mais il est d usage de ne pas trop en avoir function funcName arg1 arg2 1 if condition Contenu Les op rateurs sont toujours pr c d s et suivis d un espace l exception des op ra teurs unaires Les commentaires sont crits au format phpdoc http ma
276. dans des infrastruc tures h bergant des applications PHP Chaque incident fera l objet d une analyse gravit causes possibles actions de pr vention et attitude adopter en cas de pro bl me Bien entendu il y en a certainement d autres vous de pr voir tous les cas possibles en fonction de ce que vous mettez en place D finition des exigences pour l exploitation QUATRI ME PARTIE L injection de code D finition Une injection de code ou injection SQL est une pratique courante qui consiste trouver un moyen d ex cuter du code non sollicit sur un ordinateur l insu de son propri taire Voici par exemple une injection de code classique Un code source peu s curis dans une application situ sur notre serveur Je suis accessible via http host hello php inc_file _GET page include_once inc_file Cas Le code source d un hacker l ext rieur hack php On m appelle comme ceci http host hello php page http hacker hack php path dirname __FILE__ passthru tar czf path etc tgz etc 55 exit Causes possibles se zi ne Si quelqu un arrive p n trer votre syst me en utilisant ce principe votre code n est pas suffisamment s curis et ou votre configuration est inadapt e Ces injections peuvent galement tre r alis es sur des bases de donn es mal configur es Actions de pr vention V rifiez toutes les configurations
277. dans l adoption de PHP dans les entreprises la place du oftom up habituel C est le r sultat de longues ann es de discussions et de n gociations mais cela tant acquis la suite sera une autre paire de manches R F RENCE En savoir plus sur Zeev Suraski et Zend Technologies Zeev Suraski poss de un blog et de nombreux articles son sujet sur Internet Voici un bon point de d part gt http suraski net T moignages d utilisateurs 43 CHAPITRE 18 G rald Cro s consultant chez Aston Aston est une soci t forte d un peu moins de 300 personnes Elle accompagne les entreprises dans l volution de leur syst me d information et le d veloppement de leurs solutions e business G rald Cro s est consultant sp cialis dans les technologies open source et particu li rement la plate forme PHP Pouvez vous vous pr senter J ai un parcours scolaire classique orient vers l informatique Jai compris l int r t du d veloppement le jour ou j ai d ball ma premi re calculatrice programmable avec la possibilit de la faire travailler ma place C est vite devenu une passion r fl chir une bonne fois pour toute une s quence d instructions capables de r soudre d finitivement des probl mes r currents Jai int gr le monde professionnel en tant qu ing nieur d tudes dans une soci t de services en informatique et j ai volu vers diff rents postes de la gestion de pr
278. de http dev6 php5 nedlinux com action ViewProject amp pro ject 39 http codejanitor com wp apps fastframe http de geocities com ggf_team Choisir les ressources et les supports de donn es Nom Gpfr Horde InterJinn Ismo Jade Krysalis Logicreate Framework Medusa Merlin Works Crealab php MVC Phrame Popoon CHAPITRE 7 155 Tableau 7 1 Quelques frameworks pour vos d veloppements PHP suite Description Generic PHP Framework propose des ressources g n ri ques pour applications d velopp es en PHP 4 Il met disposition des fonctionnalit s au service des entrepri ses un syst me de gestion d erreurs et un gestionnaire de tests Horde est un noyau tr s complet pour toute application web moderne Un framework g n rique pour application web ou ligne de commande Il met disposition des outils de gestion des sessions de profiling de cache de gestion de formu laires et d internationalisation Un autre framework permettant de mettre en uvre des applications MVC Jade est un environnement de d veloppement par objec tif le d veloppeur se concentre sur les r gles de gestion Jade s occupe de l interface utilisateur Un framework qui s pare logique m tier et pr sentation bas sur les transformations XSLT et sur SOAP Recom mand pour des applications complexit lev e Un framework pour applications web qui poss de de nombreux outils de
279. de il est possible de le faire via PEAR Quelques lignes doi vent tre ajout es au fichier php ini pour que PHP charge correctement l extension apd Faites cependant attention aux incompatibilit s APD fonctionne avec les ver sions r centes de PHP et n est pas compatible avec certains modules Zend Zend Optimizer etc Une fois install pour cr er une trace il suffit d appeler la fonction apd_set_pprof_trace au d but de votre script La trace de l algorithme de r cur sivit que nous avons vu plus haut dans ce chapitre donne ceci les deux fonctions ont t renomm es rec_count_1 et rec_count_2 Assurer la qualit d un d veloppement PHP ET CHAPITRE 12 Une trace APD compress e en largeur Real User System secs cumm Time excl cumm excl cumm cumm Calls call s call Name 0 1001 0 0001 0 0409 rec_count_1 1 1001 0 0000 0 0360 rec_count_2 3 1 O RAPPEL Les b n fices du profiling Le profiling est un m canisme qui enregistre des informations d taill es sur l ensemble des op rations effectu es par une requ te fonctions classes fichiers parcourus et appel s e l fait gagner norm ment de temps sur l analyse d une erreur notamment les investigations sur son origine e aide comprendre comment fonctionne votre application e permet d analyser pour chaque action r alis e les impacts sur les performances et ainsi d optimiser votre application au maximum Vous po
280. de PHP serait trop long mais on peut au moins citer e Sa souplesse PHP propose deux syntaxes l une proc durale l autre orient e objet Chacune de ces syntaxes permet de mettre en uvre les m mes fonctionnalit s mais vise des publics diff rents La syntaxe proc durale est destin e aux webmestres et aux informaticiens qui travaillent sur l interface graphique des applica tions La seconde syntaxe orient e objet est tr s proche de Java et C dont elle s inspire volontaire ment pour diminuer les co ts de formation des entreprises Un d veloppeur Java ou C pourra ainsi migrer vers PHP 5 avec peu ou sans formation les concepts et syntaxes cl s tant identiques e Sa richesse fonctionnelle Avec PHP vous disposez de plus de 3 000 fonctions permettant de g rer rapidement la majorit des besoins communs e Ses performances Avec des exemples d applications g rant plus de 150 000 visiteurs par jour neowiz com on trouve difficilement des plates formes aussi robustes e Son interop rabilit Ce n est pas pour rien que PHP est de plus en plus souvent choisi comme plate forme pour interfacer des syst mes d information PHP peut manipuler des services web facilement instancier des objets Java et NET dispose de connecteurs techniques vers toutes les bases de donn es du march vers LDAP Lotus Notes SAP etc Bref PHP est la plate forme incontournable pour tout ce qui touche aux applications web Elle a com menc s duire p
281. de la conception Nous verrons entre autres travers un cas concret comment mettre en uvre quel ques l ments pratiques de mod lisation 18 Mod lisation en UML pour PHP DEUXI ME PARTIE Les tapes de la mod lisation Trois axes de mod lisation englobant diff rentes actions Plut t que de se lancer dans des consid rations techniques comme nous avons l habi tude de le faire sur la plupart des projets crits en PHP nous allons ici proc der par tapes e L analyse fonctionnelle permettra de d finir les besoins les exigences et les con traintes de l application Cette tape est essentielle pour partir dans le bon sens e L analyse technique statique bas e sur la pr c dente permettra d effectuer une transition ma tris e vers la conception technique du squelette de l application aussi complexe soit il dans sa globalit e L analyse technique dynamique mettra en avant les grandes lignes des algorith mes que nous aurons d velopper en PHP Ces axes de mod lisation sont illustr s sur la figure 8 1 Vous pouvez vous r f rer cette figure pour savoir o vous en tes et ce qu il vous reste faire Figure 8 1 Les trois axes de mod lisation que nous suivrons Fonctionnel Diagramme de s quences Diagramme d activit s Diagramme de collaboration Diagramme de s quences Diagramme d activit s Diagramme de collaboration Identification des objets Diagramme de classes
282. de sous classes ou d placer des fonctionnalit s qui servent peu de mani re conomiser des ressources Principe du d corateur Le mod le Component permet la cr ation de classes ConcreteComponent Un mod le Decorator issu de Component permet galement la cr ation de classes ConcreteDecorator ConcreteDecorator est associ une classe ConcreteComponent mise en param tre qu il d core en lui ajoutant de nouvelles fonctionnalit s Figure 10 11 Principe Principe et mise en pratique du d corateur Field 5 A FieldDecorator Jecorator Component LabeledField InvalidField Concrete Decorator InputText Concrete Select Concrete Component Component Mise en pratique Une classe abstraite Field repr sente un champ de formulaire voir figure 10 11 Select et InputText sont des classes h ritant de Field repr sentant respectivement une liste d roulante et un champ de texte Ces champs peuvent tre lab lis s et ou invalides Comme ces nouvelles fonctionna lit s servent peu nous d cidons de mettre en place un d corateur plut t qu une ou plusieurs sous classe s Mod lisation en UML pour PHP DEUXI ME PARTIE La classe abstraite FieldDecorator aggr ge Field qu elle prend en param tre et peut ventuellement simuler LabeledField et InvalidField mettent respective ment en uvre la gestion de la lab lisation et de l invalidit d un Field qui p
283. de vos serveurs en particulier les param tres sensi bles register_globals dans php ini droits d acc s MySQL etc Faites aussi tr s attention votre code PHP Une configuration s curis e de l environnement d ex cution ne colmate en aucun cas des failles de s curit dans les d veloppements Sympt mes et attitudes adopter en cas de probl me Dans le pire des cas toutes vos donn es sont vol es et d truites rendant le serveur inutilisable Dans le meilleur des cas il est possible pour le hacker de r cup rer vos applications et d effacer quelques fichiers Cela d pend beaucoup de la s curit interne de la machine Si ce malheur s abat sur vous explorez le code de vos applications en vous aidant les logs du serveur HTTP si vous y avez acc s pour trouver la ou les faille s Assurer la disponibilit s curit et maintenance an CHAPITRE 16 Si votre syst me est enti rement d truit vous ne pouvez que le remonter avec les sauvegardes dont vous disposez Faites le en prenant le temps qu il faut pour le rendre plus stable et plus s curis qu avant c est g n ralement beaucoup mieux que de se pr cipiter au risque de se retrouver avec le m me probl me le lendemain Exploitation d une faille sur un programme serveur HTTP PHP etc D finition Les hackers passent leur temps scruter les failles de s curit et se servent souvent des sites qui en font la liste au jour le jour Certains
284. des 0 et des 1 a progress au fur et mesure pour devenir plus intuitive et proche de l algorithme et des mod les que l homme peut lire et travailler Nous introduisons ici le concept d abstraction e L assembleur fait d abord abstraction du code machine qui au del de quelques lignes devient illisible e Des langages imp ratifs plus volu s basic etc ont ensuite permis de s abstraire du formalisme orient machine assembleur pour laisser place une syntaxe qui s approche davantage de l algorithme e Viennent ensuite les langages proc duraux avec fonctions et proc dures pour remplacer les sauts goto 1abe1 e Enfin la programmation objet fait son apparition actrice de la conception d applications de grande taille et de la mise en place de briques r utilisables Figure 11 9 Les couches d abstraction des Proc dural Objet langages proc duraux et objet Assembleur Binaire code machine Qu est ce qu un objet Un objet est l instance d une classe compos e de propri t s et de m thodes En d autres termes partir d une classe nous pouvons cr er plusieurs objets Les propri t s peuvent tre assimil es des variables de classe et les m thodes des fonctions incluses dans la classe Chaque propri t et chaque m thode poss de un niveau de visibilit e L acc s priv limite l utilisation d une propri t ou d une m thode la classe qui l h berge
285. du temps lib rer La cr ation d une branche peut impliquer la mise en place d op rations de fusion merge et de nombreuses probl matiques li es au d veloppement d une application en deux versions ind pendantes La cr ation de nombreuses branches peut galement poser probl me moins d tre organis il est facile de se perdre dans ces diff rentes versions de plusieurs fichiers Une op ration de maintenance classique ou une r vision ne doit pas faire l objet d une branche Dans la mesure du possible l ensemble des op rations corrections de bogues mises jour doivent tre effectu es sur la m me branche le plus sou vent la branche principale HEAD Subversion SVN Subversion est le digne successeur de CVS que nous aborderons plus loin dans ce chapitre Il reprend les bons points de son pr d cesseur sans ses d fauts et met dis position de nouvelles fonctionnalit s tr s utiles qui font de ce programme un outil d exception Si vous utilisez d j CVS il existe un outil permettant de migrer votre d p t de don n es en maintenant l historique en place En revanche si vous voulez installer un nouveau d p t l installation de Subversion plut t que CVS est recommand e Apports de Subversion par rapport CVS La liste suivante issue du site officiel de Subversion vous donnera un aper u de ce que Subversion apporte de plus par rapport CVS La plupart des fonctionnalit s CVS ont
286. e w ai le Cis Cmon AlCas Caler Map Assembler TRACE gt security log Types Caters Caers Cmo Sourer e Col d His C 762m NTERNAL S teng ferr T iinetion T dese ni 84 M reg 1 39 Herand C7 4548 4 cas Lo ere INTERNAL 6 MG Sievel ca SCF GO Meva File FENV PILOT DASE Varbdothogu SON Gr er He tie pere REMOTE laborer des tests unitaires Nous avons d j vu dans les pr c dents chapitres quoi servent les tests unitaires nous ne reviendrons pas sur ce sujet En revanche nous allons d couvrir concr te ment comment d buter avec l outil Simple TEST http simpletest sourceforge net Assurer la qualit d un d veloppement PHP ET CHAPITRE 12 Installation de l espace de travail Nous nous baserons sur l architecture de la figure 12 11 pour notre installation Commencez par cr er un dossier tests ind pendant de votre application Vous pouvez t l charger et d compresser l archive de Simple TEST dans le dossier tests de mani re vous retrouver avec un r pertoire tests simpletest Vous trouverez la derni re version de Simple TEST sur http sourceforge net projects simpletest Vous avez maintenant un espace de travail op rationnel pour vos tests Figure 12 11 Fichiers de code Jeux de tests associ s Organiser ses jeux de test Lanceur centralis EE all_tests php sources tests
287. e N anmoins il existe quelques outils tr s pratiques mettant en uvre quelques agents et frontaux afin que vous soyez conscient de l tat de votre syst me tout moment Les outils disponibles sur Internet Parmi ces outils en voici deux qui donnent un il et un historique sur les ressources principales de vos machines e PhpSysInfo vous trouverez une copie d cran de cet outil au d but du chapitre 6 Cette application facile installer donne l tat du syst me un instant type de syst me d exploitation charge p riph riques utilisation de la m moire parti tions mont es et tat du r seau http phpsysinfo sourceforge net Cacti un outil pratique et complet pour mettre en place des graphes la mani re de l utilitaire mrtg tr s populaire aupr s des administrateurs syst me Cacti est crit en PHP et poss de une interface agr able gt http www cacti net Nagios un logiciel fiable libre connu des administrateurs syst me et l un des plus suivi par sa communaut de d veloppeurs D autres solutions du m me type existent Zabbix ou OpenNMS parmi les gratuits Patrol BMC Tivoli IBM ou la gamme OpenView HP parmi les solutions commerciales gt http www nagios org Ressources utiles surveiller Parmi les ressources que nous devons surveiller nous pouvons choisir celles qui sont susceptibles d tre touch es par les applications PHP Assurer la di
288. e installation l Figure 4 14 Principe du packaging Sans packaging Avec packaging Cr ation des D but Tests unitaires scripts de mise Packaging tests de recette jour SGBD LDAP G n ration des Construction et descripteurs de stockage de la d ploiement capsule Nettoyage des Tests positifs PRIS G n ration des Alerte d echec actions lancer Fin du packaging pendant le Packaging d ploiement Figure 4 15 Une op ration standard de packaging d application RESSOURCE Un outil existant de packaging d applications PHP Le composant PHP_Archive de la biblioth que PEAR permet de g rer des archives phar PHP Archives Il est pr vu que cette gestion d archives fasse l objet d une int gration native dans PHP 5 x http pear php net package PHP_ Archive Organisation du projet conventions et outils PREMI RE PARTIE T ches de maintenance ur r i ir au iqu environnement dans un tat stable et Leur r le est de maintenir automatiquement 1 jour Ces t ches sont d finies et mises en place par l administrateur syst me voici une liste non exhaustive d id es de t ches de maintenance Quelques t ches automatis es e Nettoyage du syst me de fichiers retrait des fichiers temporaires d tection et archivage des fichiers qui ne sont plus utilis s Nettoyage de la base de donn es retrait des enregistrements inutiles sessions expir es etc
289. e read only true exclude bak conf path usr local etc comment Configuration des programmes d mons utilisateur read only true exclude bak web path web comment Applications PHP read only true exclude bak log ses tgz tar gz my_ tmp psd Mettre en place l environnement d ex cution pour le d veloppement 18 CHAPITRE 4 Contenu du script de packaging sur notre serveur de d veloppement bin sh R pertoire contenant les applications packager WEB_DIR web R pertoire contenant les paquetages PKG_DIR space packages Date du jour DATE date Y m d Construction d un paquetage pour chaque application stockage dans space packages lt appli gt lt date gt _ lt appli gt tar gz cd WEB_DIR for file in 1s grep vE tmp grep vE do if d file then if d PKGDIR file then mkdir PKG_DIR file fi tar exclude tgz exclude czf PKG_DIR file DATE _ file tar gz file Te fi done Le script pr c dent se base sur la date pour effectuer le packaging Mais vous pouvez aussi vous baser sur la version actuelle et effectuer vos paquetages partir des sources du d p t de donn es Le script devra alors tre modifi pour extraire les donn es du d p t construire le paquetage correspondant la version courante puis nettoyer les donn es extraites Exemple de script de sauveg
290. e 6 vous aidera choisir des outils d administration adapt s la main tenance globale des donn es e Le chapitre 7 aborde le choix des outils de d veloppement utiliser dans vos applications pour manipuler des donn es Maintenance technique Elle concerne la gestion purement technique des serveurs et du r seau informatique Deux chapitres abordent sp cifiquement ce sujet e Le chapitre 4 d crit tout ce qu il faut savoir pour installer et maintenir un envi ronnement d ex cution pour le d veloppement e Le chapitre 15 aborde ensuite l installation de l environnement d ex cution pour la production ainsi que la prise en compte des caract ristiques de cet environne ment dans les d veloppements Assurer une stabilit et des performances optimales Assurer en continu la promesse d une application stable et performante n cessite de l organisation et de la rigueur Les conventions sont l pour rappeler les bonnes prati ques de comportement Elles sont en quelque sorte le rail qui guidera les acteurs du projet dans la bonne direction une fois qu ils auront les mains dans le cambouis et les yeux riv s sur des d tails D finir des conventions pour la conception d applications PHP E CHAPITRE 2 Mettre disposition un document crit Mettre disposition un aide m moire crit et modifiable tout moment en fonction des volutions constat es peut s av rer judicieux Nous pouvons par exemple nommer ce doc
291. e L acc s prot g limite l utilisation d une propri t ou d une m thode la classe qui l h berge aux classes d riv es et aux classes m res e L acc s public l ve toute limitation d acc s La figure 11 10 illustre la composition d un objet des propri t s et des m thodes ne nes SUA propr qui peuvent toutes avoir une visibilit publique prot g e ou priv e Exploiter les points forts de PHP les m ta structures ET CHAPITRE 11 Figure 11 10 Composition d une classe Classe M re Ma classe Classe fille Autre classe Acc s Acc s Acc s priv prot g public Les classes et leurs constituants peuvent galement avoir d autres propri t s int ressantes e Une interface ne contient que la structure d une classe Elle sert de mod le d autres classes e Une classe abstraite abssracf comme une interface ne peut tre instanci e par le biais du mot cl new mais peut contenir du code e Les m thodes et propri t s statiques d une classe sont uniques pour chaque objet correspondant Il n est pas n cessaire de construire un objet pour les manipuler Au m me titre que les constantes elles sont accessibles avec l op rateur e Les m thodes et les propri t s d clar es comme final ne peuvent pas tre red fi nies dans les classes filles elles ne peuvent pas tre surcharg es Quand et comment utiliser des objets L utilisation d un
292. e Schlossnagle cit ci dessous George est auteur de APD et contributeur sur de nombreux projets PHP dont PHP lui m me Advanced PHP Programming de George Schlossnagle aux ditions Developer s Library Pour en savoir plus sur APD et ses options vous pouvez vous rendre sur la documentation officielle l adresse suivante gt http www php net manual fr ref apd php Xdebug Voici un autre outil de d bogage similaire APD Xdebug effectue galement des op rations de profiling sur vos scripts et est appel par un client de d bogage diteur PHP qui g re le d bogage Xdebug est capable de personnaliser les messages d erreurs en y ajoutant des infor mations sur les allocations m moire les appels de classes et de fonctions ainsi que tat des variables La figure 12 8 vous donne un aper u du message affich par Xdebug en cas d erreur E Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Figure 12 8 Une erreur affich e par Xdebug Function Location 1 main web gpn prj fraternity home parameters Idap_edit php 0 gt edit web gpn pri fraternity home parameters Idap_edit php 28 gt search web gpn prj fraternity classes ldap php 47 gt rsearch web gpn pri fraternity classes Idap php 126 gt open web gpn prj fraternity classes ldap php 170 _bind web gpn prj fraternity classes Idap php 145 id_Idap resource 19 Idap link
293. e Unix PHP respecte la casse mais si vous programmez sous Unix Linux BSD et si vous vous amusez appeler vos fichiers par le m me nom avec des casses diff rentes un syst me Windows ne l acceptera pas e Certains modules sous Windows ne sont pas compatibles ou ne fonctionnent pas de la m me mani re avec les syst mes Unix com posix etc Faites attention cela e Par d faut Windows utilise deux caract res invisibles pour les retours la ligne retour chariot saut de ligne r n Unix n en utilise qu un saut de ligne n Cela peut avoir une incidence dans vos applications Les scripts en ligne de com mande pour Unix notamment n aiment pas les retours la ligne de Windows OurIL Si vous travaillez avec Subversion Sous Unix et si vous mettez deux fichiers de m me nom mais de casse diff rente au m me endroit le checkout sous Windows va chouer du moins avec la version de Subversion actuellement en place lors de l criture de ces lignes L environnement applicatif du syst me d exploitation Le serveur de courriers lectroniques les syst mes de bases de donn es en place la configuration r seau les restrictions de s curit sont autant de ressources et con traintes conna tre et exploiter au mieux dans vos applications Avant tout d ploiement pensez communiquer le plus t t possible l administra teur quel sera le comportement technique de votre application
294. e certaines fonctions Le lien suivant est un exemple d application de checkstyle pour PHP gt http www spikesource com projects phpcheckstyle Organisation du projet conventions et outils PREMI RE PARTIE Op rations de sauvegarde Si le probl me du crash syst me vous arrivait que feriez vous Cela d pend de ce y que vous avez pr vu et mis en place Les lois de la s curit en cas de crash sont les suivantes e Les sauvegardes doivent tre r guli res e Les sauvegardes doivent tre compl tes e Chaque proc dure de sauvegarde doit tre accompagn e d une proc dure de res tauration L oubli d une sauvegarde peut g n rer des pertes au m me titre que l oubli de don n es pendant la sauvegarde ou labsence de proc dure de restauration qui rendrait p rilleuse la r installation du syst me Le tableau suivant met en avant une liste de proc dures que vous pouvez appliquer la main ou automatiser en fonction de vos besoins Tableau 4 2 Un exemple de planning de sauvegarde Fr quence Op rations Toutes les heures Sauvegarde incr mentale des sources Tous les jours Packaging des applications et sauvegarde des paquetages g n r s Sauvegarde incr mentale de la configuration des serveurs Toutes les semaines Sauvegarde des travaux de la semaine sur support amovible bande CD Rom Mise jour automatique des applications cvsup Tous les mois Construction et sauvegarde d une
295. e d change permettant de stocker et de transf rer des mod les Ce standard promet galement d tre int res sant Le transfert des mod les devrait tre assur entre diff rents diteurs De plus de nombreux logiciels de g n ration de code et de rapports pourront tre d velopp s autour de ce protocole commun POUR ALLER PLUS LOIN MDA Pour en savoir davantage sur MDA vous pouvez vous rendre sur le site officiel l adresse suivante gt http www omg org mda Optimiser le modele pour PHP Apr s avoir mod lis une application il peut tre utile d avoir quelques r flexes d optimisation avant de passer l impl mentation proprement dite Dans ce chapitre nous apprendrons par exemple que la programmation orient e objet avec PHP propose des choses tr s utiles telles que les constantes et les m thodes magiques Nous constaterons en revanche qu il n est pas toujours bon de programmer en tout objet comme nous pouvons le faire en Java PHP c est aussi une plate forme particuli re qui bien adopt e peut donner le meilleur d elle m me S adapter aux sp cificit s de PHP et conna tre la plate forme sera un atout pour tout architecte et d veloppeur Enfin nous aborderons le sujet de l interop rabilit et de la p rennit de votre archi tecture et de vos d veloppements Si votre application fonctionne merveille aujourd hui qu en sera t il demain Saura t elle s adap
296. e d tail des proc dures de mise jour sont largement expliqu es sur Internet nous ne les d taillerons donc pas ici gt http www fr freebsd org doc fr_FR ISO8859 1 books handbook index html gt http diablotins org astuces ugml Mettre en place l environnement d ex cution pour le d veloppement 117 CHAPITRE 4 Quelques t ches semi automatis es Ces t ches peuvent tre lanc es en ligne de commande par l administrateur syst me ou via l intranet de l entreprise e Red marrage de d mons serveurs lorsqu une op ration fastidieuse de red mar rage devient r guli re il peut tre utile de mettre en place un automatisme e G n ration de la configuration si votre environnement h berge de nombreuses applications le contenu de certains fichiers de configuration httpd conf etc peut devenir redondant et volumineux Dans ce cas vous pouvez mettre en place un script de g n ration de ces configurations qui volue en fonction des applica tions install es dans l environnement comme nous l avons vu pr c demment Un environnement cl en main la Zend Platform Le chapitre 17 de cet ouvrage vous propose une pr sentation pratique de la Zend Platform un environnement d ex cution cl en main pour l entreprise propos par la soci t Zend Technologies L environnement d ex cution propos par la Zend Platform met disposition des outils de gestion des performances et de la qualit ains
297. e diagramme d activit s tat initial Une action un tat tat final U Une d cision ne autre action tat Encore une autre action tat EXEMPLE PRATIQUE Diagramme d activit effectuer une demande de d ploiement Le diagramme suivant donne un exemple de navigation explicit e par un diagramme d activit s Cette navigation concerne un formulaire de demande de d ploiement d applications PHP se trouvant par exemple sur l intranet d une entreprise D but profil administrateur profil d veloppeur Page liste des demandes Page choisir une application packag e Action choix d une application Page liste des versions de l application Action choix de la version Action v rification de la capsule Action valider une demande Action refuser une demande Action lancement du processus de d ploiement Page information sur les probl mes de la capsule Capsule ok non oui Page validation Action annulation Figure 8 18 Un exemple de diagramme d activit s pour le projet UNANYM Action validation Page confirmation l ments de mod lisation utiles PHP CHAPITRE 8 EXEMPLE PRATIQUE Diagramme de s quence enregistrement d un incident Le diagramme de la figure 8 17 repr sente l algorithme initial d enregistrement d un incident Un agent d tecte un incid
298. e donne des informations sur la structure d une classe Elle ne permet pas en revanche d effectuer une instrospection sur des objets Ce m canisme est utile pour produire de la documentation sur un code source trans formation au format docbook par exemple ou pour laborer un protocole qui transmet le mode d emploi d un objet une entit ext rieure au m me titre que WSDL En utilisant la m thode magique _ toString Cette m thode magique est appel e lorsque l on veut afficher un objet Vous devez pour cela l impl menter dans la classe correspondante L exemple suivant montre comment mettre en uvre ce m canisme Exploiter la m thode magique __toString pour fournir du XML lt php class BookList function __set property value this gt property value function __toString ret_val lt books gt n foreach this AS key gt value ret_val lt book gt n ret val lt id gt key lt id gt n ret_val lt name gt value lt name gt n ret_val lt book gt n ret_val lt books gt return ret_val Exploiter les points forts de PHP les m ta structures EX CHAPITRE 11 header Content type text xml books new BookListO books gt b1 PHP 5 Avanc books gt b2 Best Practices PHP print books gt Ce code envoie les donn es suivantes au navigateur lt books gt lt book gt lt id gt b1 lt id gt lt name
299. e en place dans votre environnement Bien entendu cette installation sur mesure prend un peu de temps Elle demande quelques connaissances en compilation que nous vous proposons d acqu rir d s maintenant avec pour commencer la compilation du serveur HTTP Apache Compilation du serveur HTTP Nous allons prendre ici comme exemple la compilation du serveur HTTP Apache 2 sous un syst me Unix qui peut tre n importe quel syst me Linux BSD ou propri taire Vous pouvez galement compiler la version 1 3 x d Apache en suivant les m mes instructions quelques d tails pr s cela fonctionne tout aussi bien Commencez par ouvrir une console et suivez pas pas la proc dure ci apr s L environnement d ex cution REX CHAPITRE 15 R cup ration des sources et pr paration de la compilation Les sources d Apache se trouvent sur le site officiel l adresse suivante gt http httpd apache org download cgi Une fois que vous avez rep r PURL des sources il vous faut d terminer o vous voulez installer Apache et avec quelles options L emplacement usr local est un bon compromis pour une installation sur mesure Entrons dans le vif du sujet R cup ration des sources et mise en place de l espace de travail cd usr local src wget http lt url gt httpd 2 lt version gt tar gz tar xzf httpd 2 lt version gt tar gz rm f httpd 2 lt version gt tar gz cd httpd 2 lt version gt Dans le c
300. e fabrique s appelle getPage dans PageManager Ce jeu de tests d crit la mani re dont le gestionnaire de page doit fonctionner class FactoryTestCase extends UnitTestCase public function testInstanciate page new HTMLPage new Content this gt assertIsA page HTMLPage this gt assertTrue method_exists page getContent pageManager new PageManager new Content this gt assertIsA pageManager DataManager this gt assertTrue method_exists pageManager getPage public function testGetPage content new Content content gt first new ContentItem hello It s me content gt second new ContentItem hi Very good this gt assertEqual 2 count content gt getItems this gt assertEqual hi content gt second gt getTitle pageManager new PageManager content htmlPage pageManager gt getPage Html this gt assertIsA htmlPage HTMLPage this gt assertWantedPattern lt h1 gt lt p gt lt h lt p gt htmlPage gt getContent xmlPage pageManager gt getPage xml this gt assertIsA xmlPage XMLPage xml xmlPage gt getContent this gt assertWantedPattern A lt cont good tent gt xm1 this gt assertNoErrors simplexml_load_string xml this gt assertErrorPattern APage pdf nown i pageManager gt getPage pdf Les motifs de conception Design Patterns CHAPITRE
301. e leur ex cution via les objets Receiver correspondants Mise en pratique Un objet Receiver prend en param tre une cha ne de caract res contenant une expression valuer puis renvoie un r sultat L Invoker envoie une commande plu sieurs cha nes valuer puis r cup re les r sultats une fois qu ils sont disponibles Utilisation Ce motif sert souvent mettre en place un poo de requ tes un syst me de log ou une fonctionnalit annulation plusieurs niveaux RETENIR Mettre en place des macrocommandes Le motif commande est pratique pour organiser un syst me qui met en uvre de nombreuses comman des Vous pouvez envisager de cr er galement des objets MacroCommand qui se chargent d ex cuter plusieurs actions l mentaires les unes la suite des autres 240 Mod lisation en UML pour PHP DEUXI ME PARTIE L it rateur Iterator Le motif it rateur met en place une strat gie de parcours Il agit sur des collections Principe de l it rateur Une classe abstraite Iterator sert de mod le des classes Concretelterator Un objet Collection utilise un Concretelterator qui fournit un moyen d it rer sur un ensemble de valeurs ou d objets Utilisation avec PHP Ce motif est souvent nativement int gr PHP Vous pouvez it rer sur les l ments d un tableau ou sur les propri t s d un objet sans avoir d clarer d it rateur Vous pouvez galement modifier le c
302. e questionnaire Figure 5 4 J utilise mon diteur pour E Je fais du PHP de mani re Un test pr liminaire A les loisirs et le travail A intensive B r guli re C occasionnelle KE Je travaille sous A toute plate forme pour choisir son diteur B le travail uniquement C les loisirs uniquement Les projets sur lesquels je travaille sont A de grande taille 6 mois et B de taille moyenne 2 6 mois B Unix BSD Linux MacOS X C de petite taille 1 2 mois de d veloppement C Windows Mes collaborateurs sont au nombre de D Mon environnement de travail est 6 A 11 et une grande quipe projet A une grosse infrastructure B 1 10 en petit comit de projet B mon poste et quelques serveurs C 0 2 je travaille quasiment seul C mon poste de travail uniquement Mes applications sont d velopp es avec A L essentiel de mon travail est de A le mod le objet de PHP5 A d velopper et maintenir des applications B des fonctions et classes compatibles PHP4 B d velopper des applications C des fonctions essentiellement C maintenir des applications Parmi les fonctionnalit s suivantes lesquelles vous paraissent les plus importantes Cochez A pour n cessaire B pour utile C pour sans importance BEM La coloration syntaxique A 8 C IX Le gestionnaire de t ches todo L indentation automati
303. e xUnit Simple TEST ou PEAR PHP Unit est recommand pour int gration aux routines de v rifications et de cons tructions nocturnes Simple TEST est introduit dans les chapitres 12 et 16 2 Les tests sont crits au pr alable Un test unitaire par exemple est destin effectuer des v rifications sur une action simple et d livrer un compte rendu positif ou n gatif L impl mentation associ e aura comme objectif de remplir la fonctionnalit voulue donc de passer le test avec succ s 3 Les tests de recette doivent tre r dig s Ces tests ont pour objectif de d terminer les fonctionnalit s impl menter afin qu ils correspondent aux besoins exprim s Ils ne font pas exception l criture pr alable et peuvent ainsi servir l quipe et au client pour effectuer les v rifications voulues 4 Tout d veloppement l mentaire doit faire l objet d un test unitaire Les tests uni taires effectuent des v rifications simples sur les fonctionnalit s l mentaires de limpl mentation Ils permettent une d tection tr s efficace des erreurs Les 4 lois de la simplicit 1 Se limiter au strict n cessaire Il sera difficile pour le d veloppeur PHP habitu travailler avec une large palette d outils de se limiter une impl mentation effi cace et correcte des fonctionnalit s pr vues Cette d marche est pourtant n ces Organisation du projet conventions et outils PREMI RE PARTIE saire Tout d
304. eau 373 header contr le par 373 opcode 375 outil existant 372 plusieurs niveaux 373 sur mesure 369 Cacti 420 cadre de travail voir framework 151 Cake framework 153 caract res latins 60 Carthag framework 154 cas d utilisation 184 exemple pratique 186 casse choix de la 59 Castor framework 154 catch 300 caudium 385 CDATA XML 257 CEP framework 154 Cgiapp framework 154 cha ne de caract res d limiteurs 297 manipulation correcte 297 cha ne de responsabilit motif 238 champ MPD 170 charge m nager les ressources 291 charte de d veloppement 31 conseil pour la r daction 31 checkstyle outils de 146 chef de projet 48 chef de service 49 classe ___autoload 205 abstraite 265 270 mod lisation 191 accesseurs 273 auto chargement 205 composition 265 contr le 189 convention d criture 271 d finition 264 dialogue 189 entit 189 formatage 54 mauvaises pratiques 271 m thodes 264 m tier 189 objet diff rence 189 passage en param tre 273 polymorphisme 273 propri t s 264 st r otype 189 types de 189 utilisation avanc e 274 visibilit 264 272 cl trang re MPD 170 cl s et de valeurs tableau 254 client participation au mod le 202 r le dans l quipe 49 clonage motif prototype 229 cluster PHP 21 clustering Zend Platform 432 cn common name LDAP 177 coacher votre quipe 31 code mort 152 code source formatage 53 collaboration plan 51 strat gie 51 commande mot
305. efficacit elle pr sente quel ques inconv nients qui ont conduit au d veloppement de moteurs de templates comme Smarty ou PHPLib e Aucune restriction n est faite sur l utilisation de PHP L auteur du template a acc s toutes les fonctions PHP disponibles dans l environnement e Il est difficile de personnaliser la syntaxe L utilisation des tags PHP est obliga toire e L architecture du moteur n est pas fig e c est vous de d finir vos conventions Contraintes li es aux moteurs de templates L utilisation d un moteur de templates apporte de gros avantages en mati re d archi tecture de maniabilit du code et d aide au travail en quipe En revanche elle peut avoir galement quelques inconv nients Le moteur de templates est une couche suppl mentaire qui risque d avoir de l influence sur les performances et le comportement de votre application Si votre moteur propose la mise en cache de pages et la compilation des templates veillez ma triser ces outils et les utiliser de mani re optimale L utilisation du cache doit tre ma tris e Si votre cache est mal configur vous pouvez vous retrouver dans les situations suivantes e Les donn es de vos pages doivent voluer mais e cache les a fig es Cela vous oblige supprimer purger les fichiers de cache fr quemment e La configuration de votre cache n emp che pas l ex cution de processus complexes et co teux chaque requ te e Le nom
306. eloppeurs PHP sont encore rares Ils doivent avoir de bonnes connaissances g n rales et th oriques en programmation informatique et une cer taine exp rience de d veloppement dans d autres langages Un atout tr s appr ciable la connaissance du Web Parmi les utilisateurs exp riment s ceux qui connaissent le contexte web du d velop pement informatique ont un avantage tr s appr ciable sur les autres Parfaitement ma triser PHP ne suffit pas tre un d veloppeur fiable de sites web Beaucoup de programmeurs rencontrent actuellement des probl mes en milieu pro fessionnel pour ces raisons Comment aborder PHP Il n y a pas de recette miracle pour devenir un bon d veloppeur PHP les parcours sont tr s h t rog nes En revanche le d veloppeur PHP est vite limit par un manque de connaissance ou d exp rience dans des domaines qui ne sont pas directe ment li s PHP e la ma trise des fondements de l algorithmique et de l informatique e le respect de r gles et de conventions tous niveaux e la connaissance des technologies nouvelles notamment celles qui tournent autour du Web et des r seaux e la ma trise d autres technologies diff rentes de PHP telles que Java C C Delphi C ou toute autre plate forme dont l expertise demande un investisse ment cons quent La figure 1 4 tente de mettre en avant les diff rents types de d veloppeurs PHP que l on peut rencontrer Cette g n ralisation
307. ement OR roles module user_management OR roles module LIKE _admin La convention PEAR Elle est recommand e par le PHPGroup et d crite officiellement sur le site officiel de PHP l adresse suivante gt http pear php net manual fr standards php Exemple de code crit au format PEAR function displayTable table null if Gis_array table print_r table return true return false EX Organisation du projet conventions et outils PREMI RE PARTIE Le style BSD Le style BSD ressemble au style propos par PEAR Il est utilis par de nombreux programmeurs C et C Exemple de code crit au format BSD function displayTable table null if is_array table print_r table return true return false Le style GNU Le style GNU est moins r pandu pour crire du PHP mais vous pouvez vous en ins pirer si vous le souhaitez Vous trouverez des informations sur le projet GNU l adresse suivante http www gnu org home fr html Exemple de code au format GNU function displayTable table null if is_array table print_r table return true return false Le style Kernighan amp Ritchie Ritchie est le concepteur du populaire et redoutable langage C Il publiera le premier livre sur la programmation en langage C avec Kernighan Le format propos par Kernighan amp Ritchie est compact et lisible D finir des conventions
308. en commun de tracking rapports de bogues les synchronisations du code source et des donn es sont autant de proc dures qui facilitent et acc l rent le d veloppement en quipe Un gain de temps en cas de crash Qui n a jamais t victime de pertes de donn es dues un crash Que ce soit un simple document perdu suite un probl me de l diteur ou de multiples donn es perdues suite un crash de disque dur les pertes de temps g n r es devoir tout reconstruire sont tr s d sagr ables Un environnement d ex cution bien construit poss de une strat gie de sauvegarde et de restauration qui permet de limiter les risques et de gagner du temps dans la mesure o toutes ces proc dures sont automatis es et fiables Une section op rations de sauvegarde est disponible plus loin dans ce chapitre Une complexit relative L environnement d ex cution en d veloppement est souvent le plus complet car non seulement il simule l environnement de production mais il h berge aussi les outils d aide au d veloppement et de gestion des sources Organisation du projet conventions et outils PREMI RE PARTIE Choix des outils Le probl me est d viter de se retrouver avec une configuration trop complexe qui ne serait pas parfaitement ma tris e et maintenue Il faut donc faire attention dans le choix des outils et la mani re dont on s en sert En r gle g n rale un bon outil de maintenance syst me doit
309. enOffice org pendant toute la dur e de son laboration par un script PHP en ligne de commande PHP GTK est la version graphique client lourd de PHP L avantage de GTK est sa portabilit Les applications GTK en PHP sont en pleine mergence Pour en savoir plus sur PHP GTK vous pouvez vous rendre sur le site officiel l adresse suivante gt http gtk php net PHP est il adapt vos besoins CHAPITRE 1 Architecture web PHP HTTP C est l utilisation la plus courante et galement la plus prouv e de PHP De nom breux serveurs HTTP tels que Apache IIS ou Caudium sont compatibles avec PHP Figure 1 7 PHP associ un serveur HTTP lt php echo Bienvenue 2 gt Comme nous l avons vu pr c demment cette installation de PHP avec un serveur web fait l objet de plusieurs installeurs pour Windows En revanche nous verrons dans cet ouvrage comment installer PHP de mani re optimale avec un serveur HTTP en environnements de d veloppement et de production Architecture web avanc e Lorsqu il s agit de mettre des applications PHP en production et de les maintenir r guli rement une simple installation de PHP et d un serveur HTTP ne suffit pas Figure 1 8 Environnement d ex cution Une architecture web avanc e pour applications PHP Serveur d applications PHP OC LL Optimiseur applications incidents Environ
310. ences plus minimes existent entre les r visions de la version 4 Dans sa version 5 PHP autorise les d veloppements orient s objet Les objets en PHP 5 sont par d faut pass s par r f rences contrairement aux objets PHP 4 qui sont pass s par valeurs Et de nombreux autres sujets plus ou moins importants MySQL non inclus par d faut mots cl s etc doivent tre pris en consid ration Voici deux liens utiles concernant les diff rences entre PHP 5 et les autres versions Migrer vers PHP 5 anglais http www zend com php5 migration php FAQ sur les migrations http www php net manual fr faq migrations php L Si vous pouvez choisir entre la version 4 et la version 5 de PHP choisissez la plus r cente C est un gage de qualit de fiabilit et de p rennit Aujourd hui il reste encore quelques applications non compatibles PHP 5 mais elles se font de plus en plus rares PHP et ses modules Les modules et les plug ins sont lavenir de la programmation Certaines applica tions comme l diteur Eclipse ne sont compos s que de modules Cela facilite les d veloppements les possibilit s d volution et la personnalisation d une application PHP poss de beaucoup de modules Environ 400 sont enregistr s l heure actuelle dans la biblioth que PECL http pecl php net Bien entendu ils ne sont pas tous requis G n ralement une plate forme PHP de production contient cinq trente modules parmi l
311. ent Il s adresse via addIncident au gestion naire d incidents IncidentManager Ce dernier s adresse son tour au contr leur d incidents IncidentControler via addIncident et ainsi de suite CORRE Agent addincident addincident updateState destroy 1 Figure 8 19 Un diagramme de s quence pour l enregistrement d un incident EXEMPLE PRATIQUE Diagramme de collaboration enregistrement d un incident Le diagramme de la figure 8 20 repr sente l algorithme initial de l enregistrement d un incident 1 1 1 sendTicket Incident TicketControl 1 1 1 1 updatelncident 1 1 2 updateState gt 1 addincident 2 1 1 addincident gt 1 1 3 destroy IncidentManager IncidentControl MonitorAgent Agent Incident Figure 8 20 Diagramme de collaboration pour l enregistrement d un incident Mod lisation en UML pour PHP DEUXI ME PARTIE Le diagramme de collaboration Ce diagramme est similaire au diagramme de s quence Il repr sente sous forme de graphe les interactions entre diff rents l ments d un point de vue algorithmique Les actions sont num rot es comme ceci 1 1 1 1 1 1 etc Lorsqu une entit effectue plusieurs op rations on incr mente l tat comme ceci 1 2 1 2 1 etc Du mod le l impl mentation Utilisation d un g n rateur de code Votre mod le est maintenant tabli et v
312. ent aux protocoles SOAP et WSDL ER Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Figure 14 10 Contenu des documents WSDL et SOAP Document WSDL d finition du service web types types de donn es messages param tres de fonctions ports fonctions classes etc bindings protocoles amp infos d acc s Informations sp cifiques authentification paiement etc Messages SOAP contenu utile Message SOAP protocole d change du service Enveloppe SOAP HTTP Header En t te SOAP Bloc SOAP T I Bloc SOAP Corps de la requ te Bloc SOAP Bloc SOAP Comme illustr sur la figure 14 10 le document WSDL contient tout ce qu il faut pour que le client sache communiquer avec le serveur les adresses des services appeler les types de donn es et les fonctionnalit s mises disposition Le message SOAP assure le transfert d informations entre le client et le serveur Il contient les informations d acc s et de s curit ainsi que les donn es utiles changer Vous pouvez reconna tre les diff rentes parties d un message SOAP ou d un document WSDL en vous aidant de la figure 14 10 Parmi les diff rentes applications qui mettent en uvre des services web avec SOAP citons e en PHP l extension native SOAP nuSOAP et PEAR SOAP en Java Axis JAXR SAAT JBossWS e en NET WebServiceSt
313. ent de production L environnement d ex cution ET CHAPITRE 15 Le serveur HTTP Les applications PHP sont pour la plupart des applications web d pendantes d un serveur HTTP Dans la mesure du possible il faudra viter que vos d veloppements PHP soient d pendants d un serveur HTTP sp cifique car ce dernier peut changer de comportement en fonction des versions ou tre remplac par un administrateur syst me Voici une liste non exhaustive de caract ristiques du serveur HTTP exploitables par PHP Pour chaque section qui va suivre seront propos es une description du sujet du probl me et des propositions de solutions alternatives Les variables d environnement Certaines variables d environnement accessibles via le tableau _SERVER sont fig es ou peuvent tre d clar es dans la configuration du serveur Extrait de httpd conf serveur Apache SetEnv VARIABLE Valeur Le probl me quelques unes de ces variables telles que _SERVERC QUERY_STRING auto g n r e par le serveur ont peu de chance d voluer En revanche d autres sont plus sp cifiques et risquent d engendrer des probl mes en cas de mise jour du serveur HTTP Les solutions alternatives les variables d environnement et de configuration peuvent tre galement d clar es dans l environnement PHP php ini ou directement dans votre application Si cette derni re doit souvent changer d environnement HTTP ou PHP vitez d
314. ent des l ments de r flexion leur vraie finalit est de favoriser une r flexion m thodique sur un probl me Une fois que la solution est trouv e le diagramme finalis aura moins de valeur Mod lisation en UML pour PHP DEUXI ME PARTIE Maintenir un diagramme qui devient de plus en plus complexe chaque it ration vous fera perdre du temps et affaiblira votre capacit de r flexion sur des probl mes simples au d triment de votre efficacit Mod liser sur des cycles courts Plus le cycle de mod lisation sera court plus les modifications seront petites et vous pourrez ainsi vous int resser plus sp cifiquement ces volutions Ce cycle peut varier de quelques semaines un ou deux mois suivant votre projet Cette pratique augmente votre agilit et vous permet de fournir plus rapidement des versions stables aux utilisateurs finaux Stocker l information une seule fois toujours au m me endroit C est une pratique g n rale Posez vous la question Si je dois maintenir cette infor mation de mani re permanente o dois je la stocker L id e est de r duire les redondances qui augmentent la complexit au d triment de la simplicit dont vous devez faire preuve La propri t collective Tout objet que vous cr ez doit pouvoir tre utilis par d autres Et tout ce que font les autres sont des outils que vous pouvez exploiter dans vos d veloppements Quelques pratiques suppl mentaires Ces
315. ent sup rieures pour les cha nes d limit es par dans la mesure o leur contenu n est pas interpr t Luti lisation de permet g n ralement d accro tre la lisibilit et le confort d utilisation Faites attention tout de m me ceci Quelle cha ne va s afficher a 14 ab 24 ab_c 34 La cha ne match e est la plus longue C est ab_c qui l emporte Affichage J ai 34 ans echo J ai ab_c ans Autres trucs et astuces en vrac Mentionner convertir les types de donn es Vous avez certainement remarqu de temps en temps des types de donn es int string etc juste avant une expression Convertir un type de donn es display boo1 _GET d Cette op ration permet dans un premier temps de s assurer que le type de donn es de la variable assign e est le bon ce qui vite les risques d erreurs ou de comportements anormaux par la suite Par ailleurs la pr sence de cette mention aide le compilateur optimiser les perfor mances de votre algorithme Dans la mesure du possible comparez syst matique ment deux types identiques En revanche il est possible en PHP de comparer deux variables de types compl te ment diff rents tels qu un bool en et un tableau C est ce qui fait entre autre la sou plesse et la permissivit de la plate forme Utiliser les constantes magiques Les constantes magiques __LINE__ __FILE__ __FUNCTION_ __CLASS__ et __METHOD__
316. environnement d ex cution ES CHAPITRE 15 e D sencombrer les op rations r alis es sur la plate forme Toute op ration effec tu e sur une plate forme de production est un risque potentiel Les proc dures peuvent d finir des cycles de mise en production en accord avec les cycles de d veloppement pr vus pour chaque projet voir chapitre 2 m thodes agiles Cela permet galement de r partir la t che de l administrateur syst me dans le temps de mani re ce qu il ne soit pas dans une situation ou toutes les quipes de projets ont une mise en production faire en m me temps Il est important de d finir ces proc dures en pr sence de toutes les personnes concer n es avant chaque projet Packaging des applications Si votre environnement grandit et que le nombre d applications s accroit au point qu il devienne difficile de tout g rer manuellement l administrateur syst me peut mettre en place un syst me de packaging des applications Le syst me le plus connu en PHP est celui de PEAR qui permet via une commande pear install ou pear update d installer ou de mettre jour un composant Ce sys t me g re le t l chargement et l installation compl te de chaque composant Exploiter l existant PEAR est une solution qui fonctionne mais qui poss de ses limites li es l environnement PEAR Si vous souhaitez mettre en place une appli cation de gestion du packaging adapt e qui fournit les automatismes que
317. erreurs et de leurs causes Utilisation d outils existants pour le d bogage d applications PHP Nous verrons au chapitre 12 qu il existe plusieurs outils pratiques int grer PHP pour d boguer des applications Ces outils mettent disposition des fonctions per mettant d activer d sactiver le d bogage ou le profiling et effectuer diverses op ra tions d investigation dans le code Choisir les outils d administration 145 CHAPITRE 6 Figur Peo a Environnement Environnement Environnement de Une id e de strat gie s P de production de recette d veloppement globale pour le d bogage Erreurs fatales Traces du Traces du logger d bogueur d bogueur Base de bogues L4 Y Outil de A Environnement POS Editeurs Hein visualisation intranet Ils peuvent g n rer des logs et des m tafichiers sp cifiques qui peuvent tre repris par des front ends comme KCacheGrind exemple de la figure 6 6 ou WinCacheGrind visualiseur de traces pour Windows CT 1421534799 web gpn prj fratemity home Idap popupldap php KCachegrind D Figure 6 6 ME race L outil de visualisation Die Movi Go Setnos Hda Kcachegind 1a Oa QQQ MTM Time No Grouping Isesren Le Flat Profile X main inci Seit Call Function 9 9 25 84 0 main E36 04C 088 1Hidap_exec 2735167 1 099 1MLDAP gt search 34160 287 1HMLDAP gt rscarch _211798
318. ersion tigris org e Sous Unix Linux vous pouvez soit installer le paquetage correspondant de votre distribution pr f r e soit suivre les tapes de compilation ci dessous Installation de Subversion remplacez les tags lt gt lt version gt par les valeurs correspondantes wget http subversion tigris org lt gt subversion lt version gt tar gz tar xzf subversion lt version gt tar gz cd subversion lt version gt configure prefix usr local make make install Cette op ration vient d installer le client et le serveur Subversion sur votre environ nement Nous pouvons maintenant passer la suite Le code source de Subversion est disponible l adresse suivante http subversion tigris org servlets ProjectDocumentList folderlD 260 Organisation du projet conventions et outils PREMI RE PARTIE Cr ation d un d p t de donn es La cr ation d un d p t de donn es Subversion se fait en une ligne gr ce la com mande de maintenance svnadmin install e en m me temps que Subversion Installation d un d p t de donn es Subversion svnadmin create svn repositories phpapps Cette op ration cr e le d p t phpapps dans le r pertoire svn repositories Une fois g n r le d p t est op rationnel Configuration pour PHP avec Apache WebDAV Configurer Subversion avec Apache WebDAV permet un acc s sur mesure aux d p ts de donn es Subversion depuis l ext ri
319. es du serveur HTTP mieux c est Voici dans les sections qui vont suivre quelques serveurs HTTP utilis s avec PHP L environnement d ex cution ET CHAPITRE 15 Apache 1 3 x C est actuellement le serveur le plus utilis par la communaut PHP Apache est une r f rence de fiabilit et de richesse fonctionnelle Selon les statistiques de Netcraft http Awww netcraft com il occuperait pr s de 70 des parts de march Il est galement gratuit et son utilisation avec PHP ne pose aucun probl me Apache 2 x Il est le digne successeur de Apache 1 3 x et offre de nombreuses fonctionnalit s en 8 P plus dont la possibilit d avoir un environnement multithread afin de mieux g rer Re les ressources En revanche certaines extensions PHP sous Unix sont encore incom patibles avec le multithread il est donc conseill de ne pas exploiter cette option pour l instant Apache gt http httpd apache org EXPLICATION Pourquoi ne doit on pas utiliser Apache 2 dans un environnement thread multi processeur de production Extrait de la documentation officielle de PHP PHP est un mortier C est un mortier utilis pour cons truire de belles applications web en utilisant beaucoup de biblioth ques ensemble apparaissant comme une seule entit travers un langage intuitif et facile apprendre La flexibilit et la puissance de PHP se fondent sur la stabilit et la robustesse de la plate forme fond
320. es modules du groupe Propri taires intranet pour la gestion des droits Mon Typs Dussripuon Droits Actions 12FF Manager admin Management de projets J2EE Struts 1 A M 0 M 0 A A x Mes portails admin Administrer mes portails BAM OM DR A Gestion du forum admin Gestion du forum du groupe PJ A M 01 D R A accueil admin Module d accueil par d faut pour tout le monde PAMTMORA Moniteurs admin Check de sites BAM 0 0 X Taches admin T ches et v nements Ba Wv 0 REA Gestion des groupes admin Gestion des utilisateurs des groupes des modules et des portails PANDORA Base de donnees admin Administration de la base de donn es 8 1 0 vi 0 A A inscription admin Module d inscription MasterFlow 8 1 0 VA 0 A A agenda com Module de gestion d agenda de MasterFlow 8 1 0 vi po A A rest com Module de test 2 a ti 0 D R LA Discussion com Module de discussion en direct PAMTO0DVORA pages 1 2 Suivant gt CJ Correspondance des droits Ic ne R le Description Aucun drot Module Accueil Al Adh rent Appartenance simple Groupe Propri taires FR R dacteur Drosts de r daction D D veloppeur Droits de r daction avanc s F Propri taire hidat 4 hidat M vel idateur Droits de validation Pi adaou IC Censeur Droits de censure sur ce qui a t valid A o F Manager M Manager Ayant des responsabilit s de mod ratio
321. es outils existants et les impl mentations possi bles de solutions Des objets aux documents XML Utilit Transformer un objet en document XML est parfois utile pour faire du stockage d informations ou de l affichage d objets Par exemple l affichage d un produit peut passer par une transformation de l objet entit correspondant en XML puis une transformation XSLT Exploiter les points forts de PHP les m ta structures Figure 11 17 De l objet au document XML Transformation Reflexion CHAPITRE 11 A Feuille xsl N de styles e Affichage N pen A N D ni Er Transmission J xmi er Rae WDDX Vers BD Objet M t SOAP j jet M tier Al S Stockage Proc dure Template Outils existants Les outils suivants sont disponibles au sein de la plate forme PHP et effectuent des transformations d objets en documents XML Tableau 11 7 Outils existants pour passer des objets aux documents XML Outil WDDX SOAP XML RPC Les moteurs de templates Smarty etc Description Permet de s rialiser des donn es dont des objets Les donn es s rialis es peuvent ensuite tre d s rialis es res titu es SOAP et XML RPC sont des protocoles de services web bas s sur le format XML Un moteur de templates construit un document texte partir d un mod le et de donn es Ce document texte peut tre un document XML si le mod le s y pr te
322. es tests sur des configu rations tr s h t rog nes peut s av rer judicieux Les tests unitaires et tests de recette vous seront tr s utiles pour fixer rapidement les bogues li s ces change ments d environnement e Si votre application est fortement d pendante de l environnement d ex cution alors il vous faudra veiller ce que les versions et les configurations de vos exten sions soient homog nes sur l ensemble de vos serveurs Par exemple le comportement d une extension li e l utilisation d un SGBD dans une application PHP est soumise la configuration du SGBD et la version qui est install e sur le syst me La configuration des outils Ces configurations n ont pas d influence sur le comportement des applications en revanche elles en ont sur le confort de votre environnement de d veloppement La mise en place des outils de d veloppement est abord e un peu plus loin dans ce chapitre dans la section Outils et param tres communs Mettre en place l environnement d ex cution pour le d veloppement a CHAPITRE 4 Le trio d veloppement recette production Si vous utilisez une m thode agile dans la gestion de vos projets vous connaissez cer tainement ce trio que nous avons d j un peu abord pr c demment dans la descrip tion des environnements d ex cution types Il consiste mettre en place trois environnements similaires qui ont des r les bien d finis e L environnement
323. ests utilisation des 418 include utilisation de la m moire 286 vs require 287 include_once 287 include_path php ini 391 indentation 54 indicatif de maintenance d finition 62 Ingres II 166 ini fichier exemple 177 fichier s curit 178 format 176 279 injection de code 410 cause 410 exemple 410 pr vention 410 int grateur 48 int gration couche de l architecture 29 interaction avec d autres plates formes 344 bridge Java PHP 345 C C avec PHP 346 CLASSPATH 346 entre applications h t rog nes 351 Java PHP 344 345 m thodes agiles 33 pont Java 345 Interbase 166 interface 265 270 mod lisation 191 InterJinn framework 155 interop rabilit 344 SOAP 355 solutions 354 introspection exemple 246 iplanet 386 is_ref 299 Ismo framework 155 El iso 8859 1 60 it rateur motif 240 it ration projet PHP 51 sur un objet SPL 209 J Jade framework 155 Java interaction avec PHP 344 Zend Platform bridge 430 jeux de caract res 60 JPEG compression 295 JSWS serveur http 386 K KCacheGrind 313 arbre des appels 313 carte des appels 313 GraphViz 313 installation 313 interface 313 Valgrind 313 Kernighan amp Ritchie formatage 57 Krysalis framework 155 L 1 locality name LDAP 177 langage couches d abstraction 264 volu 264 volution 264 proc dural 264 langue d criture 58 LDAP Lightweight Directory Access Protocol 175 abr viations 177 sch ma et classes 176 Lego
324. et choisir les bonnes ressources Enfin nous aborderons les outils li s la manipulation des donn es en passant par le choix du SGBD l laboration des mod les conceptuel et physique puis le choix d un format adapt aux caract ristiques des donn es que vous devez manipuler REX Organisation du projet conventions et outils PREMI RE PARTIE Les extensions C pour PHP Qu est ce qu une extension Dans absolu le r le de PHP se r sume interpr ter du code Dans ce code un cer tain nombre de mots cl s d finissent les actions effectuer lors de l interpr tation les boucles les conditions et les fonctions natives Si PHP est fourni avec autant de fonctionnalit s de la gestion des fichiers celle de multiples SGBD en passant par les services web c est parce qu il sait tirer parti de programmes existants tels que MySQL LibXML OpenLDAP et des centaines d autres Ces programmes peuvent tre pilot s par PHP gr ce aux extensions Il existe deux types d extensions e Les extensions autonomes qui ne requi rent pas la pr sence d un programme sp cifique e Les extensions bridge qui mettent en place un acc s natif aux fonctionnalit s d un programme dont le code source les headers au minimum doivent se trouver sur le syst me Ce sont surtout elles qui permettent l acc s des programmes existants dans PHP Figure 7 1 Syst me d exploitation Les extensions PHP PH _ Ea 7
325. et clair aux personnes charg es de la r alisation Il est galement important que la ma trise d ouvrage collabore troitement avec la ma trise d uvre afin d viter toute perte de temps dans des travaux inutiles Organisation du projet conventions et outils PREMI RE PARTIE La ma trise d uvre Elle est charg e de la r alisation dans les d lais impartis et conform ment aux sp ci fications fournies par la ma trise d ouvrage Son premier travail sera d tablir des sp cifications techniques r pondant aux sp cifications fonctionnelles en termes de solu tions techniques Ce n est qu l issue de cette premi re tape que l quipe de projet sera en mesure de fournir des pr visions objectives sur la charge de travail n cessaire Un planning pourra donc tre tabli et compar aux estimations r alis es en amont Il est important que la ma trise d uvre respecte les sp cifications de la ma trise d ouvrage Une ma trise d uvre n est pas responsable des d fauts ventuels des sp cifications fonctionnelles En revanche elle est charg e de rester conforme ces sp cifications dans la r alisation Le document constitu de la pr sentation du projet des sp cifications fonctionnelles et des sp cifications techniques se nomme Sp cifications techniques du besoin STB Des proc dures mettre en place Une machine bien pens e bien huil e et bien rythm e permet d obtenir de bons
326. et d utilisation du d bogueur P P 8 qui g re les points d arr t permet de suivre l ex cution d un script pas pas et d observer tout moment l tat de l environnement variables globales d clarations etc Figure 5 3 Les infobulles fmyClass new MyClass de l diteur Komodo myClass gt setName public setName name Guillaume Pon on D finit le nom de la personne courante Notons que Komodo est aussi tr s agr able utiliser pour des scripts en mode ligne de commande et qu il int gre une fonction utile de recherche sur prototypes de classes et de fonctions gt http www activestate com Products Komodo Anjuta Un diteur universel pour les utilisateurs d Unix et de Linux dot d une interface compl te et agr able Il poss de des fonctions de travail en quipe un shell int gr et de nombreuses options de personnalisation 126 Organisation du projet conventions et outils PREMI RE PARTIE En revanche la gestion de PHP n est pas encore compl tement finalis e Il n est pas possible de cr er des projets sp cifiques pour PHP et les outils de navigation dans les classes et les fonctions ont encore du mal fonctionner avec PHP gt http anjuta sourceforge net PHP Designer Un diteur attirant gratuit con u sp cialement pour PHP et ses technologies com pl mentaires HTML CSS SQL etc Il int gre la plupart des f
327. eulement un war ning include_once et require_once n engendrent pas d erreur si vous tentez d inclure deux fois le m me fichier En revanche l utilisation de ces fonctions n est pas toujours recommand e car vous risquez de ne plus ma triser le cha nage de vos fichiers et d inclure des donn es inutiles Int ressez vous galement la m thode magique __autoload qui permet une gestion transpa rente des inclusions de fichiers contenant des classes Passage par valeur ou par r f rence Passer une valeur ou une r f rence une fonction ou une variable consiste respecti vement dupliquer ou passer une adresse La diff rence est fondamentale et lourde de cons quences que ce soit sur les performances ou sur le comportement En PHP 4 les passages par d faut se font toujours par valeur En PHP 5 en revanche les variables contenant des objets sont par d faut pass es par r f rence et les autres sont toujours pass es par valeur Passages par valeur et par r f rence PHP 4 ces variables sont pass es par valeur elles sont dupliqu es my_function var_type_elem var_object var_target var_source PHP 5 les variables de types non objet sont pass es par valeur les autres par r f rence my_function var_type_elem var_object var_target var_source est un objet PHP 4 modifications pour que le comportement soit quivalent celui de PHP 5 my_function
328. eur De nombreuses possibilit s sont offertes au niveau de la gestion des permissions Pour effectuer cette op ration vous devez disposer d une version r cente d Apache 2 accompagn e des modules suivants ajouter dans son fichier de configuration httpd conf LoadModule dav_svn_ module modules mod_dav_svn so LoadModule authz_svn_module modules mod_authz_svn so La figure 3 5 propose une mani re de disposer les r pertoires qui contiendront votre configuration et vos d p ts de donn es La configuration d Apache qui accompagne cette disposition permet de g rer vos droits et de cr er autant de d p ts que vous voulez sans rien avoir red marrer latente Figure 3 5 phpappse Configuration d Apache 2 repositories pour Subversion services httpd conf lt Location svn gt svnpasswd DAV svn RES SVNParentPath svn repositories AuthType Basic AuthName D p t de donn es AuthUserFile svn svnpasswd Require valid user AuthzSVNAccessFile svn svnperms lt Location gt Installer et utiliser un gestionnaire de versions n CHAPITRE 3 Le fichier de permissions svnpasswd est de type htpasswd Avec Subversion vous pouvez cr er des groupes d utilisateurs et leur assigner les r pertoires que vous voulez en lecture et ou en criture gr ce au fichier svnperms Le fichier svn svnperms groups admins guillaume matthieu viewers damien cyril guillaume rw phpa
329. eure actuelle la plupart des applications PHP ne sont pas packag es elles sont fournies simplement avec une proc dure d installation la charge de l utilisateur Dans l id al le packaging permet de s affranchir de toute installation ou mise jour manuelle Le principe du packaging est d crit sur la figure 4 14 Par exemple un composant PEAR peut tre install et configur automatiquement avec une simple commande pear install ce qui est plus agr able que d avoir suivre tape par tape un manuel d installation Dans un cadre professionnel le packaging peut devenir utile dans les cas suivants e Vous vendez une m me application plusieurs clients et vous devez fournir des mises jour r guli res le packaging vous permettra d automatiser compl tement vos mises jour e Vous avez un nombre important d applications maintenir Les installations et mises jour sur vos diff rents environnements d ex cution deviennent fr quentes Le packaging permettra de r duire ces op rations des actions ponctuelles afin de gagner du temps Mettre en place l environnement d ex cution pour le d veloppement CHAPITRE 4 Environnement d ex cution D but installation Serveur d Applications Transfert Packaging de D ploiement capsule automatique Fin installation D but Transfert installati des Installation manuelle installation oircee Fin Configuration manuell
330. eurs pour la documentation et des projets strat giques comme PEAR PHP 5 PHP 5 est sorti en juillet 2004 Il propose un nouveau moteur Zend Engine II opti mis pour les nouvelles fonctionnalit s que nous lui connaissons notamment l approche objet E Best Practices PHP Cet ouvrage est bas sur la version 5 de PHP Nous aurons l occasion de la d couvrir en long en large et en travers Figure 1 3 PHP Usage for Aug 2005 Les statistiques d utilisation de PHP par Netcraft L volution du nombre d utilisateurs de PHP est en progression constante depuis plusieurs ann es comme nous pouvons le voir sur la figure 1 3 source Netcraft http news netcraft com Ces statistiques sont mises jour r guli rement sur le site officiel de PHP l adresse suivante gt http www php net usage php Un outil simple pour r soudre des probl mes complexes Une plate forme intuitive facile assimiler Depuis le lancement de PHP 3 la popularit de PHP n a cess de progresser aupr s des jeunes et des tudiants PHP est facile assimiler donc un choix id al pour les d butants la recherche d un outil simple qui produit rapidement un r sultat concret Installer PHP Apache et MySQL en moins de 10 minutes De nombreux installeurs tels que Wampserver et EasyPHP permettent d installer PHP chez soi en moins de 10 minutes Wampserver gt http www afup org EasyPHP gt http www nexen net
331. eurs syst mes qui souhaitent utiliser PHP dans leurs scripts VIM fonctionne aussi bien sous Unix et sous Windows gt http www vim org Side Un petit diteur PHP qui int gre les templates du moteur Smarty et du Framework Copix Il n est pas encore tout fait stable mais dispose d j de quelques outils bien utiles tels que l int gration de tests unitaires l explorateur de classes et de fonctions la gestion de templates et de macros Un simple copier coller de l ex cutable suffit en guise d installation gt http www phpside org Edit Plus Cet diteur est universel largement personnalisable dot de fonctions de recherche tr s labor es et d un client FTP int gr Son interface est agr able et il g re linden tation automatique et les templates de code gt http www editplus com 130 Organisation du projet conventions et outils PREMI RE PARTIE Scite Un diteur extr mement simple rapide installer et lancer Il est largement per sonnalisable et g re le masquage de code gt http www scintilla org SciTE html jEdit Ce petit diteur gratuit crit en Java est tr s polyvalent et dispose de nombreux plug ins Il est un couteau suisse tr s int ressant gr ce ses fonctions de recherche labo r es ses macros sa capacit diter nimporte quel code source et effectuer n importe quelle conversion d encodage
332. eut tre un Select un InputText ou tout autre champ La fa ade Lorsqu une application devient complexe il est fr quent que l utilisation de nombreux objets et de nombreuses ressources dans le cadre d volutions devienne fastidieuse Principe de la fa ade L id e du motif fa ade est de cr er un acc s facile des ressources appartenant un syst me sous jacent compliqu L objet ainsi obtenu permet de s abstraire de recher ches et ou de processus complexes dont l utilisation pourrait tre fr quente Figure 10 12 UML Principe Le motif facade Recherche de donn es Syst me sous jacent unit s de recherche Mise en pratique Par exemple un objet DataFinder recherche de donn es peut faire fa ade devant un sous syst me comprenant de nombreux gestionnaires de donn es base de don n es web services etc Un autre exemple consiste construire un objet fa ade tests permettant de faire appel un sous syst me de v rifications l mentaires tests unitaires v rification de compte bancaire etc Le proxy Proxy Le proxy permet de g rer un acc s conomiser simplifier ou restreindre une res source Au lieu d acc der directement la ressource concern e nous nous adressons au proxy Les motifs de conception Design Patterns CHAPITRE 10 Principe du proxy Le proxy fournit un acc s une ressource moyennant des restrictions des simplifica tio
333. export OPTIM 02 configure prefix usr local With apxs2 usr local bin apxs Wwith inifile usr 1ocal etc php ini With xs enable soap wWith gettext with mysql enable mbstring with mbstring all disable debug enable memory 1imit L option with apxs2 usr local bin apxs est particuli rement importante pour une compilation en module dynamique avec Apache 2 L ex cutable apxs est pr sent si vous avez compil Apache avec l option enable so RETENIR Attention aux diff rentes versions d Apache Avec Apache 1 x l option with apxs2 usr 1ocal bin apxs devient with apxs usr local bin apxs Le pr compilateur de PHP fait la diff rence entre Apache 1 x et Apache 2 x Une fois que votre fichier est pr t nous pouvons finir la compilation Compilation et installation de PHP chmod 700 my_configure my_configure make make install Voil PHP est maintenant install sur votre syst me Il ne vous reste plus qu modifier le fichier httpd conf afin de permettre l utilisation de PHP avec Apache ce que nous verrons dans la derni re section Configuration d Apache pour PHP L environnement d ex cution 403 CHAPITRE 15 ALLER PLUS LOIN En savoir plus sur la compilation et l installation de PHP Le code source PHP tout comme celui d Apache est fourni avec un fichier INSTALL sa racine qui explique comment effectuer cette installation s
334. fait suite aux nombreux t moignages et retours d exp rience de professionnels ayant travaill avec des d veloppeurs 4 Best Practices PHP Figure 1 4 Fiabilit Quelques profils types de d veloppeurs PHP de plus je sais mod liser et utiliser un d bogueur J ai une bonne exp rience th orique e g n rale en informatique Je connais C Java le contexte web et je m int resse de tr s pr s PHP J ai appris programmer avec PHP et je ne m int resse pas au reste Je suis tr s fort en programmation mais pas en HTML XML et autres technologies du Web Je suis d butant en informatique et en PHP Performances w Pour en savoir plus le chapitre 18 propose cinq t moignages Les personnes choisies sont des professionnels du PHP ayant eu un parcours tr s diff rent les unes des autres De nombreuses fonctionnalit s qui en font une plate forme communicante Lun des points appr ciables de PHP est sa forte capacit d interop rabilit De nombreuses extensions natives mettent disposition des outils de gestion de flux et de protocoles de communication tous les niveaux partir des versions 4 3 x et plus forte raison avec la version 5 PHP est plus que jamais un outil d interop rabilit Les outils de manipulation XML tels que DOM SAX et SimpleXML sont stables et fiables De nombreux outils de gestion de proto coles ouverts et propri ta
335. fin de pallier ce manque Il assure l homog n it des d veloppements pr vient les risques de baisses de performances trop d inclu des l assemblage par exemple et intervient judicieusement dans les solutions techniques Si possible la personne qui tient ce r le poss de une bonne exp rience de PHP Conventions li es l criture du code source Notre objectif ici sera d assurer une criture homog ne et lisible du code source pour une collaboration efficace entre les diff rents intervenants techniques Il faudra donc que le code e soit lisible en tout point et judicieusement document e soit ma tris par la majorit et en aucun cas par une seule personne soit facile remanier e respecte les m mes r gles d criture en tout point Nous verrons dans un premier temps comment se fixer des r gles d criture en se basant sur un existant PEAR Nous aborderons ensuite l art et la mani re de g rer les versions et le d bogage D finir des conventions pour la conception d applications PHP Ta CHAPITRE 2 R gles l mentaires d criture Aussi connaisseurs que vous puissiez tre sur l art et la mani re de d velopper en PHP il est tr s facile d crire un code illisible Mais vous seriez alors confront s de r els probl mes de maintenance et le manque de style de votre travail pourrait tre consid r comme un manque de professionnalisme Formatage d un code source Vos r
336. forum PHP est il adapt vos besoins on CHAPITRE 1 RESSOURCES Pr sentation de Wampserver par son auteur Romain Bourdon auteur de Wampserver WAMP5 est une plate forme de d veloppement bas e sur Apache 1 3 x et PHP 5 Son principal but est de permettre la communaut PHP de d couvrir facilement la nouvelle version PHP Il dispose galement de la base de donn es MySQL version 4 et de l application PhpMyAdmin D couvrez galement le t moignage de Romain Bourdon sur un projet de migration Lotus vers PHP au chapitre 18 D velopper sa premi re page PHP en moins de deux minutes D velopper une premi re page en PHP est un jeu d enfant La proc dure est la sui vante 1 Apr s avoir install PHP avec un installeur cr er un fichier nomm index php dans le r pertoire racine du serveur HTTP contenant le code suivant lt php pu e echo Bonjour ceci est mon premier fichier PHP gt 2 Ouvrir un navigateur Firefox ou Internet Explorer et taper PURL de la page g n ralement http localhost Le message Bonjour ceci est mon premier fichier PHP devrait alors s afficher Bien entendu la plate forme install e permet d aller beaucoup plus loin ce qui explique l abondance de documentation et d ouvrages qui existent autour de PHP Une syntaxe souple qui requiert de la rigueur Si la souplesse syntaxique de PHP est tr s appr ci e des d butants elle est souvent
337. ft Windows qui g re un tr s grand nombre de langages et de syntaxes diff rentes Les fonctionnalit s qu il pro pose sont utiles et accessibles coloration syntaxique macros client FTP change ment de syntaxe encoding format de fichier la vol e explorateur de fichiers ges tionnaire de projets et m me le fameux mode colonne dont on ne peut se passer une fois qu on l a adopt Vous pouvez lancer cet diteur en ligne de commande et l utiliser pour mettre en place un lien de d bogage sous Windows comme expliqu dans le chapitre 14 Ouvrir un fichier en ligne de commande et positionner le curseur sur la bonne ligne cedt exe L 23 factory php gt http www crimsoneditor com Quanta Plus Il est l un des diteurs compatibles Unix les plus complets pour d velopper des appli cations web Quanta Plus est une application d dition de pages web statiques ou Choisir un diteur 129 CHAPITRE 5 dynamiques qui permet galement de d velopper en PHP Au m me titre que Dreamweaver il est l diteur id al sous Unix pour les travaux d int gration PHP HTML gt http quanta kdewebdev org diteurs pour petites applications et travaux ponctuels VIM VIM est un d riv de son homologue VI diteur universel des syst mes Unix Il pos s de l avantage d tre prouv et permet d diter un tr s grand nombre de langages Il est le programme id al pour les administrat
338. g e efficace avec APC Alternative PHP Cache Le tout objet mest pas une bonne pratique pour PHP Autant un langage comme Java privil gie cette pratique en allant jusqu consid rer les cha nes de caract res comme des objets autant en PHP une utilisation excessive des objets pourrait d grader la simplicit et les performances d une application Couche pr sentation K Couche d int gration html helpers Couche m tier sup rieure internationalisation etc Couche m tier principale objets et processus m tier Noyau C C E La couche pr sentation est compos e du langage utile la pr sentation voulue HTML PDF etc Les appels PHP de variables et de fonctions doivent tre r duits au minimum La couche d int gration fournit un environnement simplifi la couche pr sentation partir de la couche m tier sup rieure G n ralement elle est compos e de fonctions et de variables Cette couche fournit les ressources utiles l exploitation de la logique m tier sous forme d objets Elle compl te la couche m tier principale pour s adapter l utilisation que l on va en faire La couche m tier principale rassemble les objets et la logique m tier Son d veloppement en POO est recommand Les extensions C C peuvent fournir des fonctionnalit s sous forme de classes ou de fonctions Les extensions r centes pour PHP5 fournissent g n ralement des objets Figure 9 1 Utilisat
339. ge net Quelques concurrents ezSqlite Admin phpSQLiteAdmin Choisir les outils d administration EUR CHAPITRE 6 Et pour les autres SGBD Suite au mouvement PhpMyAdmin la plupart des SGBD se retrouvent avec des applications d administration nomm es Php SGBD Admin SGBD tant le nom du SGBD Par exemple il existe des applications plus ou moins performantes nom m es PhpOracleAdmin PhpSybaseAdmin etc RESSOURCES Trouver un diteur de base de donn es sur Internet Si vous cherchez un diteur pour votre SGBD pr f r visitez les sites qui h bergent des projets Open Source ou des biblioth ques de scripts Parmi ces sites nous pouvons noter Sourcefoge http sourceforge net Tigris gt http www tigris org HotScripts http www hotscripts com PhpScripts http www phpscripts fr net ComScripts http www comscripts com Et tous les autres http www googjle fr search hl fr amp q php scripts Gestionnaires de sources de donn es LDAP Flux etc Utilit des diteurs de sources de donn es Les bases de donn es sp cifiques comme LDAP les donn es format es XML etc ont galement quelques outils d administration LDAP par exemple est un protocole sp cifique optimis pour la gestion de donn es hi rarchiques repr sentant en particulier des personnes physiques et morales Les serveurs LDAP tels que OpenLDAP sont optimis s pour les acc s en lecture Dav
340. gestion de profils Un projet de la fameuse plate forme Tigris r put e pour la qualit de ses applications Ce framework est bas sur le motif de conception MVC Un peu abandonn l heure actuelle Ce framework est enti rement orient objet et sp cialis dans le d veloppement d applications web Un framework MVC abouti inspir par le projet Jakarta Struts Un framework bas sur le motif MVC2 Il poss de un existant g n rique de mod les et de composants ainsi que de multiples possibilit s pour la g n ration de vues PHP Smarty XSLT FlashMX etc Un CMS bas sur PHP 5 et XML destin supporter des applications CMS Inspir du projet Cocoon en Java URL http gpfr sourceforge net http www horde org http www interjinn com http ismo sourceforge net http www consultants interaction com action jade_presentation http www kompletecms com products Krysalis http www logicreate com http medusa tigris org http www crealabs it en merlinwork http www phpmvc net http phrame sourceforge net http www popoon org REX Organisation du projet conventions et outils PREMI RE PARTIE Nom Prado RwfPHP Seagull Sitellite Solar Studs WACT Xaraya Yellow Duck ZNF Tableau 7 1 Quelques frameworks pour vos d veloppements PHP suite Description Un framework prometteur pour tout projet web bas sur une librairie de composants PHP 5 Ses
341. gles de formatage doivent produire un code lisible et agr able Il peut aussi dans certains cas emp cher des d bordements en se fixant des limites d indentation de nombre de caract res par ligne ou de nombre de lignes La figure 2 15 vous donne un exemple de ce quoi peut ressembler une d finition de r gles d criture Figure 2 15 as D Longueur de ligne 80 caract res max gt Quelques r gles d criture traduites en une illustration Prototype de fonction Op rateur d affectation Prototype de structure L function populate ProductList productList is product_count gt foreach this gt products AS product 5 continue A g productList gt add product A gt v 3 i E return 1 Mot cl du langage fonction Appel de fonction Indentation 4 espaces Op rateur d affectation unaire Composition du formatage Ces r gles font intervenir un certain nombre de termes importants Le tableau 2 3 contient la plupart des l ments prendre en consid ration dans vos conventions Vous pouvez galement vous reporter la figure 2 15 qui propose une repr sentation visuelle de la plupart de ces l ments Organisation du projet conventions et outils l ment L indentation La longueur de ligne La taille d une fonction Le prototype d une fonction classe Le format d une structure de contr le Les op rateurs Les commentaires Les commentaires
342. gne While 1 msgsock socket_accept sock rcv trim socket_read msgsock 1024 msg KO Si la donn e re ue est un fichier et un num de ligne if ereg A a zA Z0 9 2 4 I 0 9 rcv trcv explode rcv echo gt Edition du fichier trcv 0 echo la ligne trev 1 n Lancement d emacs passthru emacs trcv 11 trcv 01 2 gt amp 1 msg OK R ponse au client OK si tout s est bien pass KO sinon socket_write msgsock msg strlen msg socket_close msgsock socket_close sock gt Pour lancer notre serveur nous allons simplement ouvrir un terminal et appeler le fichier emacsserver php Sur la copie d cran de la figure 12 5 nous pouvons voir notre terminal le lancement du serveur et ses actions en r ponse au client Assurer la qualit d un d veloppement PHP EUX CHAPITRE 12 Figure 12 5 Le serveur emacs guillaume du fichier uwe ju fichier u fichie u fichier du fichier Lorsque le serveur fonctionne le client s en aper oit et affiche le message de la figure 12 6 Figure 12 6 m Popup du client lorsque le serveur fonctionne http localhost loademacs php Konqueror x Location Edit View Go Bookmarks Tools Settings Window Help oao RIRES E E gt Location amp ademacs php f web gpn pri fraternity etc cfg php amp l 63 rl FE BE freebsd ES PHP Bwm The X Window System and
343. gration vers un autre serveur HTTP sur un autre environnement n cessitera des retouches Faites galement attention l installation CGI de PHP elle peut rendre votre envi ronnement vuln rable Consultez la documentation de PHP sur ce sujet si vous tes concern par le probl me IIS PWS gt http www microsoft com windowsserver2003 iis IIS PWS et CGI gt http www php net manual fr security cgi bin php Iplanet Java System Web Server JSWS On rencontre ce serveur commercial sur le syst me Solaris iPlanet est un bon ser veur pour les professionnels optimis pour les environnements Java JSWS gt http www sun com software products web_srvr home_web_srvr xml Et les autres Vous trouverez sur la documentation PHP des informations importantes sur l utilisa tion de votre plate forme pr f r e avec ces serveurs OmniHTTPd Sambar Xitami Installation de PHP gt http www php net manual fr install php Si vous travaillez avec un administrateur syst me n h sitez pas communiquer avec lui pour conna tre les avantages et les contraintes du serveur install Si ce choix n a pas encore t fait impliquez y les personnes concern es afin qu elles soient cons cientes des implications de ce choix La configuration du serveur Nous avons vu au chapitre 4 un exemple agile de configuration de serveur HTTP pour un environnement compos de plusieurs applicatio
344. gt http pear php net En adoptant une architecture simple et performante Un exemple d architecture type mise en place par les fondateurs de PHP en per sonnes est illustr sur la figure 2 3 Figure 2 3 Un exemple d architecture simple adapt e PHP Couche pr sentation Templates HTML SDOCUMENT_ROOT html Couche d int gration Templates Helpers SDOCUMENT_ROOT inc Couche m tier sup rieure I18N L10N lusr local php inc Couche m tier principale lusr local php inc Couche native C C lusr local src c h ilea oa D finir des conventions pour la conception d applications PHP DEN CHAPITRE 2 Cette architecture propose un d coupage en cinq couches Cela va de la couche noyau crite en C et C la couche pr sentation qui g re les aspects visuels et l interface IHM Interface Homme Machine Entre ces deux extr mes la couche m tier principale met en uvre les algorithmes fondamentaux de la logique m tier gestion des produits API de vente en ligne etc la couche m tier sup rieure propose des fonctionnalit s additionnelles telles que l internationalisation du site les possibilit s de personnalisation etc et la couche d int gration fait la transition entre la logique et la pr sentation g r es par ses deux couches adjacentes Simplifier et r duire la maintenance Tout possesseur d une voiture sait que le co t d achat initial n est pas l in
345. gt PHP 5 Avanc lt name gt lt book gt lt book gt lt id gt b2 lt id gt lt name gt Best Practices PHP lt name gt lt book gt lt books gt Des objets aux tableaux Utilit Transformer un objet en tableau se voit rarement Il est difficile et peu utile de tra duire les caract ristiques d un objet dans un tableau Cela s envisage quelquefois pour des op rations sp ciales visant profiter des possibilit s offertes par les tableaux pour manipuler des donn es Par exemple si vous souhaitez mettre en place un outil destin extraire la structure des classes contenues dans votre application afin de faire des v rifications de style ou de reproduire des diagrammes UML cette op ration peut tre envisag e Outils existants Mise part l API de r flexion qui extrait la structure des classes m thodes attributs et fonctions aucun outil sp cifique l heure actuelle ne permet de transformer des objets en des tableaux Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Figure 11 18 De l objet au tableau Transformation de la structure Reflexion Transmission des donn es gt Tableau Manipulation de GENEE E dns Via attributs a d accesseurs Proc dure Impl mentations possibles La traduction facile d un objet en tableau implique la transmission par l objet d une introspection de lui m me Cela peut tre r alis par exemple en d clarant une classe
346. guration public function __construct config_file this gt configFile config_file this gt config parse_ini_file config_file if this gt config throw new Exception Configuration file corrupted Renvoi d une valeur public function getValue key return this gt config key Ajout d une nouvelle valeur public function add key value this gt config key value return true Enregistrement du fichier public function save data date d m Y H i s n foreach this gt config AS key gt value data key value n return file_put_contents this gt configFile data CHAPITRE 12 L criture de la classe Confi gManager est alors facile et ludique Votre jeu de test est l pour vous indiquer si vous faites bonne route ou non N oubliez pas galement de veiller aux performances vous pouvez compl ter votre outil de test pour qu il mesure galement les temps de r ponse de vos op rations Figure 12 12 Objectif de l tape suivante TestOfConfigManager liminer toutes ces erreurs Fail testLoadConfig gt The configuration is not loaded at line 41 Fail test ddValue gt Add operation failed at line 49 Fail test ddValue gt Save operation failed at line 51 Fail test ddValue gt The added value is not detected at line 54 1 1 test cases complete 0 passes 4 fails and 0 exceptions Vous tes m
347. gure 6 1 e L administration des donn es diteurs de bases de donn es MySQL Oracle PostgreSQL etc diteurs de bases sp cifiques LDAP objets m tier etc e L administration des performances optimiseurs l ex cution Zend Optimizer APC eAccelerator etc outils de mise en cache bas niveau Zend Platform Apache2 APC surveillance de la charge Awstats Webalizer e L administration de la fiabilit surveillance applicative parcours des tests unitaires et des tests de r gression surveillance de l environnement snmp moniteurs de ressources syst me gestionnaire d erreurs d bogueurs traceurs e L administration de la s curit gestionnaires d acc s outils de checkstyle Choisir les outils d administration 137 CHAPITRE 6 Vos outils d administration peuvent balayer l ensemble de ces domaines Nous nous int resserons particuli rement l administration des donn es et au monitoring li la qualit et la s curit des d veloppements Simplifier les d veloppements En terme de simplification des d veloppements les apports d outils d administration peuvent tre les suivants e une visibilit sur l ensemble de vos applications et de votre infrastructure par l interm diaire des outils qui fournissent l information e un pupitre de commandes permettant de prendre le contr le du syst me d infor mation complet associ
348. heure actuelle bien que son succes seur Subversion soit maintenant assez stable et fiable pour le remplacer Cet outil a fait ses preuves pendant de longues ann es depuis 1989 il est aujourd hui au c ur de la plupart des projets de d veloppement informatique en quipe Nous basons ici nos exemples sur un syst me Unix mais l utilisation sous Windows et MacOS est similaire Installation L installation de CVS est aussi simple que l installation de n importe quel pro gramme Pour cela vous pouvez utiliser le syst me de paquetages de votre distribu tion pr f r e ou compiler CVS comme le montre l exemple ci apr s Installation de CVS remplacez les tags lt gt lt version gt par les valeurs correspondantes wget https ccvs cvshome org lt gt cvs lt version gt tar gz tar xzf cvs lt version gt tar gz cd cvs lt version gt configure prefix usr local make make check make install Les sources de CVS sont disponibles l adresse suivante https ccvs cvshome org servlets ProjectDocumentList Cette manipulation vient d installer le client et le serveur CVS sur votre environne ment Nous pouvons maintenant passer la suite 80 Organisation du projet conventions et outils PREMI RE PARTIE RESSOURCE Installation de CVS sous Windows CVSNT Si vous souhaitez installer un serveur CVS sous Windows il existe un paquetage appel CVSNT qui ins talle tr s simpleme
349. i dement les interfaces utilisateur Nous disposons de tout un tas d outils de manipula tion de templates mais leur d veloppement reste une op ration de programmation qui demande un certain apprentissage pour tre optimum Un dernier manque mon sens est l absence d une zone m moire partag e Un envi ronnement applicatif qui permettrait une application d instancier d finitivement plusieurs objets Il existe bien s r des extensions qui permettent une telle approche de ce genre de manipulation mais c est s exposer des restrictions lors du choix des h bergeurs Quelles sont selon vous les qualit s requises pour faire du bon travail en PHP De la rigueur mais ce n est pas sp cifique PHP Il faut se donner des r gles adopter des normes de d veloppement qui aboutissent un ensemble applicatif homog ne T moignages d utilisateurs was CHAPITRE 18 Les plus grands d fis des projets informatiques en entreprise ne sont pas d obtenir un r sultat qui fonctionne mais d obtenir un r sultat durable Les volutions sont une cons quence in vitable d un projet informatique exploit c est donc l efficacit de la maintenabilit que l on reconna t un projet informatique r ussi Et quelles sont les principales erreurs que font les d veloppeurs PHP La population des d veloppeurs PHP est vaste et h t rog ne Les erreurs sont donc assez diff rentes selon la population
350. i n cessitent d tre maintenues en commun Toute modification doit tre r percut e sur l ensemble des environnements Une proc dure de sauvegarde r partie peut tre galement utile en cas de pro bl me Cela permet d viter toute perte fatale de donn es cas de perte d un envi ronnement Le packaging des applications permet de simplifier les livraisons et les d ploie ments Ce packaging peut inclure une proc dure d installation ou de mise jour Une proc dure de construction nocturne nigh ly build effectuant de nombreux tests et de nombreuses op rations utiles Nous aborderons cette proc dure plus loin dans ce chapitre Mettre en place l environnement d ex cution pour le d veloppement BEN CHAPITRE 4 Une simplification des d veloppements en quipe La figure 4 7 met en avant la composition d un environnement d ex cution type pour un serveur de d veloppement Le r le et la mise en uvre des diff rents com posants sont d crits la suite de ce chapitre Figure 4 7 Composants d un environ A Services Programmes nement d ex cution pour d mons Applications Outils amp EENHENE serveur de d veloppement http Framework rsync c J rer Environnement d ex cution hs Nihi Bud ee Sauvegarde Packaging G n ration de la documentation Tests Checkstyle Qualit Le partage du code source l utilisation d outils
351. i que diverses routines de maintenance syst me Choisir un diteur Le choix de l diteur PHP est vaste et adapt tous les go ts Il est galement un facteur essentiel de productivit Ce chapitre vous propose une r flexion en deux tapes dont le but est de trouver en un minimum de temps l diteur qui vous corres pond le mieux Nous allons d abord nous int resser aux besoins auxquels l diteur devra r pondre ainsi qu aux habitudes des personnes qui auront la charge du d veloppement Cela permettra d identifier les caract ristiques de l diteur id al Dans un deuxi me temps nous proc derons l analyse pratique d une s lection d diteurs consid r s comme adapt s vos besoins Chaque diteur pr sent dans ce chapitre dispose d un site officiel que vous pourrez consulter pour aller plus loin dans votre d marche Organisation du projet conventions et outils PREMI RE PARTIE Comment choisir un diteur adapt ses besoins Dans un premier temps nous allons aborder les sujets de r flexion qui permettent de mener bien votre choix Ces r flexions tiendront compte de vos habitudes des caract ristiques des projets mettre en uvre et de leurs quipes avant d aborder les fonctionnalit s proprement dites Vous trouverez la fin de ce chapitre un questionnaire r pondant une analyse de vos besoins pour vous aider s lectionner le bon diteur parmi ceux de la liste pro
352. ice pr sident et Directeur technique h ritent d une classe abstraite D cideur Chaque l ment d une liste de requ tes concerne un des maillons de la cha ne de responsabilit Figure 10 14 Liste de requ tes Cha ne de responsabilit s Le motif cha ne de responsabilit Pr sident Chain of responsability Vice pr sident D cideur Directeur technique Les motifs de conception Design Patterns CHAPITRE 10 La commande Command Principe de la commande Lorsque deux objets doivent communiquer entre eux la m thode la plus simple con siste cr er une r f rence vers l objet r cepteur depuis l metteur et appeler la m thode qui correspond la requ te transmettre Avec le motif commande nous allons encapsuler un troisi me objet entre ces deux derniers Son objectif sera de recevoir la requ te de l metteur d invoquer le r cep teur associ et de fournir un r sultat L metteur Invoker fera r f rence un objet commande qui se chargera sur appel de la m thode execute d appeler la bonne action Figure 10 15 UML p Principe H Le motif commande Calculer une collection Command d expressions X Y Invoker ExprCommand ConcreteCommand ExprEvaluate Receiver Sur la figure 10 15 une classe abstraite Command sert de mod le des classes ConcreteCommand qui r ceptionnent les requ tes de Invoker et se chargent d
353. icipantes ou son principe Ainsi nous pouvons en d duire un diagramme contenant toutes les classes de notre projet avec leurs relations compl tes Mod lisation en UML pour PHP DEUXI ME PARTIE EXEMPLE PRATIQUE Diagramme de classes de conception Voici un diagramme de classes de conception partiel que nous pouvons d duire pour le projet UNANYM firstname lastname role mail Developper TicketControl Administrator O gt sendTicket IncidentForm K 0 1 dateBegin dateEnd keywords 1 result IncidentControl name updatelncident type addincident description getincidents gravity mergelncidents application file line getindidents updatelncident IncidentManager MonitorAgent C name HO addincident i type mergelncidents i anain Inform of description informe de frequency g re manage Figure 8 15 Un diagramme de classes de conception partiel La mise en place d un diagramme de classes de conception est un travail de r flexion La figure 8 16 ci apr s donne quelques id es d application de motifs de conception l usage de ce projet l m ents de mod lisation utiles PHP 195 CHAPITRE 8 _Entit s Person Developper Administrator Application Command MonitorAgent ConfigFile ConfigKeywords Con
354. if 239 commentaire 322 am liorer 324 bacler 322 communication m thodes agiles 33 EI compilation 396 mise jour proc dure 400 sur mesure 396 PHP 401 serveur HTTP 396 utilit 396 complexit algorithme 297 composite motif 234 composition diagramme de classes 191 compression mod_gzip 295 outils 295 conception adaptive XP 39 config m4 347 configure echec 398 constante magique exemple pratique 272 utilisation 298 contrainte mod lisation 185 MPD 170 contr le classe 189 objet 267 contr leur MVC 40 41 frontal 41 convention 26 conseils r daction charte 31 de formatage 54 BSD 56 GNU 56 Kernighan amp Ritchie 56 PEAR 55 de maintenance 29 document crit 31 criture 29 conventions et proc dures organisation du d veloppement 45 conversion de types 298 Copix framework 154 Cortex framework 154 couche d abstraction avantage inconv nient 215 458 Best Practices PHP couplage fort 344 l che 350 principe 351 courage m thodes agiles 33 cycle de red finition XP 38 Cyril Pierre de Geyer 12 D DAO Data Access Object 41 DB 166 DB2 166 DBDesigner 172 DBX BD abstraction 167 dc domain component LD AP 177 d bogage 301 APD 308 configurations utiles 146 interfaces 143 limites 143 outils 308 outils existants 144 strat gie 144 trace 143 Xdebug 311 d bogueur personnalis 302 debug_backtrace 302 debug_print_backtrace 302 d corateur motif 235 d positaire
355. igne de commande et via un frontal web Monitoring de l environnement et des applications UNANYM doit permettre la mise en place simple de plusieurs agents de monitoring qui effectuent des tests sur l environnement et les applications Ces agents devront tre rang s dans des cat go ries en fonction desquelles les actions effectu es en cas de probl me varieront les administrateurs recevront des tickets les d veloppeurs auront leur liste de bogues aliment e Les principaux acteurs sont administrateurs et d veloppeurs Les premiers s occuperont de la configuration du bon fonctionnement et de la s curit de l envi ronnement d ex cution Les seconds auront acc s aux outils de packaging depackaging et recevront des indicateurs sur les erreurs applicatives d tect es Quelques exigences il faudra absolument veiller ce que les versions fig es en production de l outil soient stables car elles manipulent des donn es sensibles Les facult s d interop rabilit de l outil seront galement tr s utiles pour le faire dialo guer avec d autres programmes diteurs gestionnaires de tickets bogues etc Les performances sont un plus pour le confort d utilisation mais ne sont pas la prio rit Quelques contraintes cet outil n utilisera pas de session Il ne doit pas tre sp cia lis pour un environnement donn et doit consid rer que du jour au lendemain les syst mes d exploitation peuvent voluer La partie web n est
356. igure 9 3 donne un exemple simple de strat gie pour un projet PHP r partie sur quatre couches dont trois sont vraiment utiles couche m tier couche int gration couche pr sentation Couche Pr sentation Fournit un environnement de fonctions et de variables de base contenant uniquement les donn es de pr sentation Il n y a pas besoin de conna tre PHP ou tr s peu pour d velopper la couche pr sentation Il n y a pas besoin de savoir comment la couche Couche Int gration m tier fonctionne pour l utiliser dans l int gration Fournit une interface pour manipuler la logique m tier gestion des produits recherches r servations etc Couche M tier Il n y a pas besoin de s y conna tre en C ou en C pour d velopper la couche m tier en PHP Fournit des classes des fonctions et des constantes utiles au d veloppement facile et intuitif d algorithmes Cette couche n est pas modifi e il y a juste besoin de la mettre jour de temps en temps Figure 9 3 Un exemple de couches d abstraction pour un projet PHP Avantages et inconv nients des couches d abstraction Le premier avantage de ce principe est de pouvoir se sp cialiser dans la connaissance d une couche sans avoir conna tre le d tail des autres Il est ainsi possible de d ve lopper les m canismes m tier en PHP sans conna tre la mani re dont PHP a t d velopp en C ni savoir comment ce travail sera utilis avec HTML ou PDF
357. il ne permet pas de mettre en place de r elles strat gies de qualit de performances et de travail en quipe de part sa nature minimaliste Un environnement standard individuel La figure 4 2 illustre les principaux constituants d un environnement d ex cution standard pour un d veloppeur qui souhaite travailler sur une ou plusieurs applica tions PHP Figure 4 2 paN Un environnement d ex cution standard pour PHP diteurs Outils Serveur de d veloppement PgSQLAdmin Dia APC etc g D g 2 S W L environnement standard individuel est compos bien entendu des serveurs HTTP et PHP mais aussi d un ou plusieurs diteurs adapt s aux applications d velopper lisez le chapitre 5 pour choisir votre diteur des outils d administration de d bo gage et de conception UML Gestionnaires de bases de donn es etc et divers autres programmes utiles permettant d assurer les sauvegardes la gestion des don n es et la communication vers l ext rieur Organisation du projet conventions et outils PREMI RE PARTIE PROGRAMMATION UML et PHP L utilitaire DIA associ au plug in UML 2 PHP5 permet de g n rer du code PHP partir d un mod le UML Vous trouverez davantage d informations sur cet outil au chapitre 9 et sur l utilisation d UML avec PHP au chapitre 8 L environnement standard en quipe L environnement d crit sur la figure 4 3 est constitu de plusieurs en
358. il y a 9 mois dans le module d export des produits Plus un projet fait intervenir du monde plus il est important de savoir qui fait quoi et qui a fait quoi Un compte CVS ou Subversion doit tre li un d veloppeur et non un poste de travail L identifiant CVS ou Subversion de chaque d veloppeur doit galement tre explicite de mani re ce que l on puisse facilement reconna tre les contributeurs par leur identifiant Faire en sorte que chacun ait son compte est galement un moyen de t moigner du travail fourni Les gestionnaires de versions retiennent chaque validation le d tail des modifications effectu es sur chaque fichier S CURIT Le probl me du vol d identit Venir travailler sur le poste du voisin et utiliser son export checkout des sources c est travailler en son nom Veiller ne pas reproduire cette erreur courante effectu e par de nombreux d veloppeurs qui travaillent dans les m mes locaux Ne laissez pas vos coll gues de projets travailler sur votre espace de travail et n allez pas travailler sur les leurs Lorsque vous voulez travailler sur le projet effectuez toujours un export votre nom afin de valider galement votre nom Cependant il est possible avec Subversion de valider des modifications son nom depuis n importe quel espace de travail Quand et pourquoi cr er une branche La cr ation d une branche consiste scinder un ensemble de fichiers en deu
359. il y a un mettez 3 e si vous avez mis et qu il y a un B mettez 1 e si vous avez mis et qu il y a un C mettez 3 e si vous avez mis B et qu il y a un mettez 1 e si vous avez mis B et qu il ya un B mettez 1 e si vous avez mis B et qu il y a un C mettez 1 e si vous avez mis un C mettez 0 RESSOURCES En savoir plus sur les diteurs PHP existants Le site suivant est sp cialis dans l valuation des diteurs PHP Vous pouvez galement le consulter pour compl ter votre d marche gt http www php editors com D autre part la derni re partie du livre suivant propose des pr sentations de nombreux diteurs avec des copies d cran une bonne r f rence pour choisir son diteur A PHP 5 Avanc 2e dition de Cyril Pierre de Geyer et ric Daspet aux ditions Eyrolles Choisir un diteur CHAPITRE 5 T Ce PIE SSSR lt PE BE lt gt oo oops of olol 000 on Si A Padua EEIE EEEE o E E Re eee ETA LLL lt lt lt lt REC IC JAAAAAAA LA upaenn Ed o etete o B oloje ajoja questionnaire Figure 5 5 R ponses du pr c dent Choisir les outils d administration Que ce soit pour un d veloppement PHP ou issu d une autre plate forme l influence des outils sur la qualit du r sultat est souvent d terminante L outil d administration est un moyen d assurer la qual
360. ile Gr ce l op ration pr c dente cette comparaison n est pas utile Cet algorithme produit une liste de comparaisons ordonn e et fonctionne quel que soit le typage utilis pour stocker les produits dans le tableau products Les seules variables temporaires contiennent des types de donn es primitifs int La fonction count et l expression permettant d obtenir le nombre de comparaisons possible ne sont appe l es qu une seule fois en dehors de toute boucle Le contenu de la deuxi me boucle ne contient aucune fonction ou op ration co teuse la variable k permet d obtenir le num ro du comparatif chaque it ration Manipulation correcte des cha nes de caract res Il existe deux types de cha nes de caract res celles qui sont d limit es par et celles qui sont d limit es par La principale diff rence r side dans le fait que les variables et les caract res sp ciaux contenus dans la cha ne d limit e par des sont interpr t s ce qui n est pas le cas pour la cha ne d limit e par Deux cha nes de caract res diff rentes var Guillaume Affiche Bonjour je m appelle var n echo Bonjour je m appelle var n Affiche Bonjour je m appelle Guillaume echo Bonjour je m appelle var n Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Ce choix n est pas primordial Les performances sont l g rem
361. ilisateur Il est souvent int res sant de conna tre le comportement du code vis vis de l utilisation de la m moire pour pr voir le comportement forte charge e La vitesse d ex cution des appels l mentaires Des outils comme KCacheGrind vous permettent de visualiser en parall le l impact de ces appels et leur taux de sollici tation Une expression r guli re tr s sollicit e qui met du temps s ex cuter pourra ainsi tre traqu e au m me titre que plein d autres appels handicapants de ce type Le d bogage sans outils ad quats se r sume souvent des successions de echo print_r et var_dump un certain stade du d veloppement de l application une fonction debug est alors envisag e qui contient quelque chose comme echo htmlspecialchars arg lt br gt afin de centraliser le flux du d bogage Organisation du projet conventions et outils PREMI RE PARTIE Cette technique est limit e et parfois dangereuse e La plupart des fonctions d affichage comme echo sont bufferis es c est dire qu avant d tre affich le flux est mis en m moire jusqu ce qu il forme un paquet de donn es suffisamment grand pour tre envoy au navigateur Si vous tentez de localiser une erreur par une succession de fonctions bufferis es il se peut que vous soyez bloqu parce que l ensemble des messages n auront pas t achemin s au navigateur temps e Lorsqu un probl me pineux survient
362. ilitaire comme SimpleTEST effectue ce genre de travail en plus des tests unitaires En revanche si vous souhaitez faire cela la main vous pouvez vous pencher sur la librairie CURL ou sur les sockets Vous retrouverez des exemples et des codes sources utiles concernant ce chapitre sur Internet l adresse suivante gt http www openstates com php 17 Exploiter un environnement d ex cution cl en main Nous avons abord pr c demment un ensemble d outils et de configurations utiles mettre en place dans un environnement d ex cution Lorsque cet environnement volue grande vitesse il devient fastidieux de manipuler et maintenir une popula tion h t rog ne de nombreux outils En r ponse cela il existe le concept d environ nement d ex cution cl en main Un environnement d ex cution est un ensemble de programmes de maintenance et de configuration accessibles par l interm diaire d une seule interface de contr le Son r le est avant tout de centraliser et simplifier les t ches de configuration et de main tenance d un environnement Toutefois il peut aussi servir maintenir un niveau de qualit suffisant des performances optimales et une interop rabilit plus large Nous aborderons dans ce chapitre les diff rents services rendus par un environne ment d ex cution cl en main ainsi que les contraintes que cela engendre Il vous sera ainsi possible de mesurer l int r
363. ils PHP pour manipuler du XML suite Description avantages et inconv nients DOM charge un document XML en m moire et vous pouvez lire modifier et supprimer les diff rents constituants du contenu DOM charge l arbre du document XML et pro pose un parcours de n ud en n ud contrairement SAX dont le parcours est s quen tiel SimpleXML est un outil introduit dans PHP 5 Il se base sur le backend de DOM et per met une navigation simplifi e Chaque n ud du document est un objet portant le nom de la balise laquelle il fait r f rence Cette extension fournit des fonctions bas niveau pour les outils qui l utilisent DOM SimpleXML et XSLT SOAP est un protocole d change de donn es normalis utilis pour les services web WDDX est un outil de s rialisation pour changer des donn es structur es par paquets Fournit des fonctions sp cifiques pour manipuler des clients serveurs XML RPC XSLT est un m canisme qui analyse et fusionne deux documents XML l un contenant les donn es XML et l autre un jeu de styles XSL Innovation de PHP 5 SimpleXML comme son nom l indique simplifie la manipu lation de documents XML Il charge un document en m moire sous forme d objets qui prennent le nom des balises XML Leur hi rarchie est la m me que celle du document XML La figure 11 4 illustre le fonctionnement de SimpleXML Outil Type DOM G n ral SimpleXML G n ral Libxml G n ral SOAP Sp cifique WDDX Sp cif
364. image des diff rents serveurs Mise jour compl te des syst mes noyau et applications Pour l automatisation des sauvegardes et des restaurations il existe plusieurs types d outils utiles e Les outils de synchronisation incr mentale rsync unison etc permettent de r pliquer des donn es d un serveur l autre e Les programmes sp cialis s de sauvegarde et de restauration Amanda ADSM TSM etc sont utiles la mise en place d une strat gie grande chelle e Les programmes de packaging et de compression tar bzip zip etc simplifient le stockage des sauvegardes Exemple de proc dure de sauvegarde Imaginons que nous ayons dans notre infrastructure un serveur de d veloppement un serveur de recette et un serveur de sauvegarde Mettre en place l environnement d ex cution pour le d veloppement in CHAPITRE 4 Nous souhaitons mettre en place e une sauvegarde incr mentale quotidienne des sources PHP en place et du d p t de donn es e un packaging des applications pendant les jours ouvr s e une sauvegarde mensuelle de l ensemble des donn es de d veloppement et de recette Pour nos op rations de sauvegarde nous utiliserons les outils rsync synchronisateur de donn es et tar outil de packaging minimal Les r pertoires concern s par la sauvegarde sont mentionn s sur la figure 4 13 Ils sont identiques sur l ensemble des environnements d veloppement recette et production
365. install ok DB 1 7 6 install ok Log 1 8 7 install ok PHPUnit2 2 2 1 Si vous construisez votre propre framework int ressez vous au fonctionnement de PEAR Vous pourrez reprendre un certain nombre de fonctionnalit s bien pratiques telles que e le syst me de packaging des librairies tenant compte des d pendances et permet tant de centraliser une biblioth que de composants e le syst me d installation d sinstallation de composants distance e la possibilit d interroger la biblioth que distance e la possibilit de mettre jour automatiquement ses composants Exemple de listage des composants PEAR install es pear list Installed packages Package Version State Archive_Tar 1 1 stable Console_Getopt 1 2 stable HTML_Template_IT 1 1 stable Net_UserAgent_Detect 2 0 1 stable PEAR 1 3 5 stable XML_RPC 1 2 2 stable apd 1 0 1 stable EUX Organisation du projet conventions et outils PREMI RE PARTIE L utilisation de PEAR commence se g n raliser et devient de plus en plus int res sante Pour en savoir plus sur PEAR consultez le site officiel l adresse suivante gt http pear php net Autres ressources scripts et applications PHP dispose d une norme r serve de scripts et applications gratuites ou commer ciales tel point que l on ne sait pas toujours par o commencer L avantage c est qu il est rare de ne pas trouver un d veloppement tout fait similaire ce que
366. installer la Zend Platform vous devez avoir install une version 4 ou sup rieure de PHP votre licence d utilisation et l outil Zend Optimizer disponible gra tuitement sur le site de Zend Technologies Il est important de bien lire les recom mandations afin d viter de se retrouver face une interruption du processus d installation Pour cela une documentation d taill e en anglais est fournie avec le produit L installation de base s effectue en mode super utilisateur root par l interm diaire d un installeur graphique en mode console Cet installeur effectue divers param trages chemin vers les applications le cache etc copie les fichiers utiles modifie les configurations des serveurs HTTP et PHP installe les routines de maintenance dans la crontab relance les serveurs cr e le n ud principal du cluster et le lance L installation des n uds du cluster s effectue avec le m me installeur en s lection nant le mode cluster node au pr alable voir figure 17 8 Les figures 17 8 17 11 sont quelques copies d cran effectu es lors d une premi re installation de la Zend Platform et de son n ud principal 44 D finition des exigences pour l exploitation QUATRI ME PARTIE Figure 17 8 S lection du type d installation Figure 17 9 Installation de la Zend Platform d tection du r per toire racine des applications Figure 17 10 Installation de la Zend Platform inscription des routi
367. intenance sont r duits par rapport aux technologies propri taires et les co ts globaux sont r duits gr ce aux licences open source de nos technologies Une meilleure visibilit est galement offerte sur le fonctionnement de l outil L quipe informatique de notre client dispose d une documentation compl te du code source phpdoc et peut intervenir sur l application si elle le souhaite Enfin la structure de la base de donn es t retravaill e pour tre plus logique et louverture d autres technologies et au syst me d information de l entreprise est accrue Quelles ont t les trois difficult s majeures rencontr es dans ce projet Comment avez vous r agi Notre premi re difficult aura t la migration des donn es de la base Lotus vers notre base MySQL Une bonne partie de cette migration n a pu tre automatis e cause de la structure tr s particuli re de la base Lotus Des traitements manuels ont donc t n cessaires La deuxi me concerne l interfa age entre les annuaires Lotus et LDAP Plusieurs annuaires d utilisateurs taient disponibles au sein du groupe dont faisait partie notre client T moignages CINQUI ME PARTIE La d cision a t prise d unifier ces annuaires en un annuaire groupe plut t que d avoir interroger plusieurs annuaires en m me temps Cela a permis d homog n iser les diff rentes informations utilisateur et de centraliser leurs acc s
368. ion En revanche les nombreux tests effectu s sur un EJB minimal avec JBoss pour cet ouvrage nont pas t concluant avec la version 1 1 1 de la Zend Platform Exploiter un environnement d ex cution cl en main a CHAPITRE 17 M THODE Pour faire appel un EJB avec la Zend Platform Commencez par cr er un EJB que nous appellerons Hel 1oWor1d pour notre exemple Vous pouvez cr er un EJB JBoss rapidement sous Eclipse avec XDotlet Nous ne d taillerons pas cette proc dure ici vous pouvez vous rendre sur le site de JBoss pour avoir ces informations Dans cet EJB nous allons mettre disposition une m thode hello qui renvoie sim plement un message de bienvenue voir figure 17 6 PHP Hello Wor Bean java Eclipse Platform x Bie Edt HTML Idy Source Refactor Navigate Search Project Run PHP Apache Window Help H lrm SMbhI S 0 Q 4B 8 5 66 e E Navigator O D HelloWorid java public void setSessionContext S publie String hello return 1 Problems E Console Bookmarks Wntable Smart insert 71 1 Figure 17 6 Notre EJB HelloWorld cr avec Eclipse Le code suivant est une classe Java de test que vous pouvez utiliser pour v rifier si votre EJB fonctionne bien public class HelloTest public static void main String args Hashtable env new Hashtable env put java naming factory initial org jnp naming org jnp interfaces env put java naming provider url jnp localhos
369. ion 62 parit de la 63 risque r duction du 33 r les r partition dans l quipe 46 Romain Bourdon 449 RPC Remote Procedure Call protocole 359 RSS exemple de client 19 parseur 142 rsync 416 RwfPHP framework 156 rythme projet PHP 51 S sablotron extension 262 SAPI 347 sauvegarde archivage 415 fr quence 415 outils 416 routine 414 serveur 414 SAX Simple API for XML 259 avantages et limites 259 d finition 257 handlers 259 lecture de document 259 principe 259 Schlossnagle George 311 script kiddie 411 Seagull framework 156 s curit administration 136 applicative 406 attaque par injection 161 environnement d ex cution 406 flood 412 injection de code 410 pr vention 409 social engineering 413 s quence diagramme de 195 serveur EI production configuration 406 installation 406 sauvegarde de 414 s curiser 407 surveillance 420 serveur HTTP 383 compilation 396 configuration 386 modules 383 options 383 utilisation 387 version 384 serveur SOAP g n ration automatiquement 357 service oriented architecture 353 service web 353 principe 353 utilisation type 353 services MVC 41 Sesam 166 session acc s disque 291 session_write_close 291 set_error_handler 302 set_exception_handler 300 302 SGBD Syst me de gestion de bases de donn es choix 161 comparatif 166 d finition 161 permissif 165 SimpleTEST 35 314 exemple pratique 315 pour la gestion d incidents 418 Simp
370. ion adapt s d veloppement recette et production Son r le est de s int resser toute solution technique afin d en ma triser l impl mentation et ventuellement de l orienter I peut tre galement d veloppeur ou architecte Il est garant de la qualit de l application et met en place une strat gie de tests Le testeur XP est responsable du suivi des tests de l int gration continue et du rythme durable Il sert d interm diaire et ne prend aucune d cision Il s informe du planning et reste l coute des d veloppeurs son r le est de d tec ter les difficult s et de les pr venir temps Ce r le peut tre tenu par plusieurs d veloppeurs en roulement cela dit il n est pas de la responsabilit du coach D finir des conventions pour la conception d applications PHP 4 CHAPITRE 2 Tableau 2 2 R les des membres dune quipe de projet web suite R le R le XP Description Le directeur Manager Il est le sup rieur hi rarchique des d veloppeurs Il s int resse au technique chef planning du projet et veille ce que les proc dures et m thodes de service mises en place soient respect es Son r le est galement de fournir des moyens humains et mat riels Le client Client Il participe la r daction des sp cifications fonctionnelles Au sens XP il r dige les sc narios client d finit les tests de recette et parti cipe la planification du projet Ma trise d ouvrage et ma trise d
371. ion des documents a t cr e partir de la classe sp cifique de g n ration PDF pour tendre cette fonctionnalit au format HTML RETENIR Pr voir la g n ricit Dans certains cas partir d objets sp cifiques pour b tir au fur et mesure des objets g n riques n est pas forc ment tr s judicieux Par exemple si vous basez toute votre logique m tier sur les sp cificit s des produits de voyage et si vous souhaitez tendre cela d autres types de produits vous risquez d avoir davantage de travail que si vous aviez bas votre logique m tier sur des entit s g n riques Concevoir des objets performants Il est possible et m me conseill dans certains cas de faire de la programmation objet avec PHP Cependant il ne faut pas oublier que nous avons faire un langage interpr t Une des forces de PHP consiste en sa souplesse qui vous laisse ma tre de vos m thodes de programmation Ainsi vous pouvez combiner la programmation orient e objet et le proc dural Utilisez des objets pour leur capacit apporter un niveau de s curit et des possibi lit s de mod lisation in gal es Sp cificit des objets PHP PHP effectue une lecture du code source qu il compile en opcodes instructions bas niveau chaque requ te effectu e par un client Ce m canisme redondant est le principal responsable de la baisse des performances si vous n utilisez pas d optimiseur RETE
372. ion des objets dans un projet PHP architecture du chapitre 2 Optimiser le mod le pour PHP 23 CHAPITRE 9 En reprenant l architecture propos e par le fondateur de PHP d crite au chapitre 2 nous valuons pour chaque couche sil est judicieux ou non de programmer avec des objets Les objets sont surtout pratiques pour manipuler de la logique m tier Ils apportent une structure facile maintenir et r utiliser En revanche plus nous nous appro chons de la couche pr sentation plus l utilisation d objets devient discutable S adapter aux caract ristiques de PHP Limitation du code parser L id e de cette limitation est d viter de charger du code non utilis dans votre requ te Par exemple charger un fichier contenant 15 fonctions pour n en utiliser qu une seule n est pas toujours optimal Pour rem dier cela un optimiseur d opcodes se chargera de maintenir le code com pil en m moire afin d viter de devoir le charger chaque requ te Le principe de l optimiseur d opcodes sera expliqu la fin du chapitre 14 Lorsque de nombreux objets sont utilis s impliquant de nombreuses d pendances il est fortement recommand d utiliser un tel optimiseur Limitation des instanciations et appels Les instanciations d objets et les appels de m thodes consomment des ressources et du temps grande chelle cela peut avoir des impacts sur les performances de votre application et l encombrement
373. ion qui renvoie un compte getAccount Une m thode qui renvoie un compte _getAccount Une m thode se voulant priv e notation courante en PHP 4 qui renvoie un compte _account Une propri t de classe se voulant priv e notation courante en PHP 4 BankAccount Appel au constructeur d une classe il doit certainement y avoir un new devant float_balance Une variable contenant un solde de type float Organisation du projet conventions et outils PREMI RE PARTIE AVENIR Les jeux de caract res Le jeu de caract res officiel des langues latines fran ais anglais etc est l iso 8859 1 latin 1 Par d faut la plupart des diteurs PHP et HTML sont configur s pour ce jeu afin de rester compatible avec la plupart des documents Mais il n est pas la voie de l avenir car ses d fauts sont de taille e Il se limite exclusivement des caract res latins Avec ce jeu il est impossible de mettre en uvre une internationalisation compl te de votre application e Chaque caract re est limit un seul octet ce qui r duit le nombre de symboles diff rents que l on peut encoder Le jeu de caract res universel est l Unicode L appellation UTF 8 correspond une solution de stoc kage des points de code d Unicode un point de code correspond un caract re parmi l ensemble de ceux qui existent dans le monde Les caract res UTF 8 sont stock s sur 1 ou plusieurs octets jusqu 6 Ce jeu a l avantage
374. ique XML RPC Sp cifique XSLT Sp cifique SimpleXML Figure 11 4 SimpleXML un outil pratique pour lire du XML Exploiter les points forts de PHP les m ta structures ET CHAPITRE 11 Tableau 11 3 Avantages et limites de SimpleXML Avantages Limites Simplicit d utilisation et compatibilit avec DOM Incompatible avec des documents trop complexes avec espace de noms CDATA etc et de tr s grande taille SAX SAX est un parseur s quentiel prouv Il lit un document XML de haut en bas et fait appel des handlers fonctions sp ciales au fur et mesure de son parcours Figure 11 5 Document XML Lecture s quentielle Handlers fonctions SAX un parseur a S prouv pour lire du XML lt book title PHP B P A 9 begin_tag_handler author G Pon on gt tag_name attributes lt intro gt Texte de l intro L content_tag_handler sz content lt lintro gt LL end_tag_handler lt book gt e tag_name La figure 11 5 illustre un exemple de lecture de document XML avec SAX Trois handlers sont d clar s begin_tag_handler est appel lorsque le parseur d tecte une balise ouvrante Il prend en param tre le nom de la balise d tect e et ses attributs sous forme de tableau e content_tag_handler est appel lorsque le parseur d tecte un contenu qu il prend en param tre e end_tag_handler est appel lorsque le parseur d tecte une balise fermante Il prend en param tre le nom de la
375. ire lorsque vous en avez plus besoin apc_delete page apc_clear_cache La fonction var_dump renvoie notre objet comme pr vu object Page 1 1 content gt array 2 0 gt string 25 Test de m moire partag e 1 gt string 32 Ce texte est stock en m moire RETENIR Attention l criture en m moire Une criture en m moire cr e un verrou qui emp che la lecture Si votre objet doit tre modifi souvent vous r fl chirez la solution de partage dans la m moire Les fonctions APC ont t pr vues pour mettre en place un cache efficace en lecture mais ne sont pas encore un m canisme robuste de gestion des seg ments de m moire partag e IPC entre les diff rents processus g n r s par PHP Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Si vous d cidez d utiliser un m canisme de m moire partag e il est important de le configurer correctement Pour cela lisez attentivement la section qui concerne l ins tallation et l utilisation d APC la fin du chapitre 14 Ma triser la r cursivit Un algorithme r cursif rend parfois de grands services Un des exemples les plus cou rants est celui du parcours de r pertoires qui gr ce un algorithme r cursif se fait tr s simplement En revanche ce genre d algorithme est des plus gourmands en m moire Lorsque vous r digez une fonction r cursive faites attention plu
376. ire en sorte qu elle soit respect e de tous par des rappels r guliers l occasion de r unions techniques e Les tests assurent une stabilit toute preuve et tous niveaux Ils facilitent norm ment le d bogage d un programme en cas de probl me et minimisent les risques d erreurs Organisation du projet conventions et outils PREMI RE PARTIE e Les outils d dition influent sur la lisibilit du code source et la mani re dont sont organis s les commentaires et la syntaxe Certains outils g n rent des m tafi chiers qui ne sont pas utiles au projet e Le choix des outils de d veloppement doit tre limit car ils n cessitent mainte nance et savoir faire L utilisation de plusieurs SGBD diff rents ou d outils com plexes est dangereux e Les proc dures et les it rations sont d finies au sein de l quipe dans le but d am liorer la productivit et de synchroniser les travaux Ces proc dures permettent aux membres de l quipe projet de planifier le d veloppement et l exploitation d une application Multiplier les exceptions faites aux proc dures d stabilise l organisation du projet fait monter la pression et peut porter atteinte au bon d roulement de l ensemble des projets g r s en parall le Maintenance des donn es La gestion coh rente des donn es d un environnement implique un certain nombre de choix et d actions que nous aborderons dans les chapitres suivants e Le chapitr
377. ires sont int gr s PHP SOAP WDDX SAP Hyperwave etc Souplesse d ad quation la complexit du probl me et la comp tence des quipes Obtenir des r sultats concrets avec PHP est facile et rapide En revanche c est double tranchant Davantage quwavec d autres technologies les tapes de finalisation de refactoring et d optimisation sont essentielles forte complexit PHP a prouv qu il restait tr s efficace condition que la com p tence des quipes le permette PHP est il adapt vos besoins TSE CHAPITRE 1 Figure 1 5 Quelques protocoles et outils d interop rabilit g r s par PHP Pre CZ Sr Figure 1 6 Fe Comp tence des quipes Niveaux de comp tences n cessaires pour r soudre des probl mes Complexit du probl me C et Java n cessitent un effort de 1 Lorsque le probl me est complexe des ma trise m me pour les petits probl mes comp tences sont n cessaires tous niveaux En d autres termes une quipe qui arrive rapidement un r sultat concret avec PHP n est pas forc ment capable de r soudre des probl mes complexes qui demandent un investissement cons quent Etre conscient de cela permet d aborder PHP dans de meilleures conditions Une architecture simple fiable et portable PHP est un programme Ce programme prend du code en entr e ex cute des op ra tions et fournit un flux de donn es en sortie
378. iries Extensions PHP zip curl xsl ftp Idap soap wddx mysql mcrypt dom iconv mbstring gd gettext jpeg pdo etc R seau dhcpd serveur dhcp named serveur de noms nfsd samba partage de fichiers etc Outils PHP PhpMyAdmin dition MySQL PhpLDAPAdmin dition LDAP outil Intranet etc Framework Copix PEAR Masterflow etc Maintenance Script de packaging g n ration de la documentation tests unitaires tests de recette checkstyle rapport de qualit etc S curit Snmp gestion r seau ipfw firewall cacti monitoring etc Gestion du parc Gestionnaire de domaines samba exchange outils de diagnostic antivirus etc Mettre en place l environnement d ex cution pour le d veloppement CHAPITRE 4 Bien entendu il est judicieux ici de tenir compte de l ensemble des fonctionnalit s que devra g rer l environnement de d veloppement Dans le cadre de notre r flexion nous nous int resserons aux sujets qui concernent PHP de pr s ou de loin Charge l administrateur syst me d acqu rir la connaissance n cessaire l installation de fonc y tionnalit s comme de gestionnaire de noms ou le firewall Certains ont volontairement t mis en gras dans notre tableau 4 1 afin de distinguer ce qui n cessitera une installation minutieuse compilation sur mesure ce qui ne n cessitera pas beaucoup d volution Il peut tre par exemple fr quent de devoir recompiler l ex cutable P
379. isateur Le composite Composite Principe du composite Ce motif est utilis pour disposer des objets dans une structure en arbre Il permet l ajout et le retrait d un objet dans un arbre dont vous pouvez d terminer le parcours 1 J P P pr fix infix postfix etc en fonction de votre impl mentation Vous pouvez par exemple consid rer les feuilles de votre arbre Leaf comme des objets l mentaires paragraphes titres et les n uds Composite comme des regroupements sections chapitres RETENIR Utilisation du composite avec PHP En PHP veillez r duire au maximum la taille des objets Composite et Leaf surtout s ils sont nom breux de mani re conomiser des ressources Vous pouvez maintenir un gros arbre en m moire avec les m canismes de m moire partag e que nous verrons au chapitre 12 Les motifs de conception Design Patterns CHAPITRE 10 Figure 10 10 UML Principe Le motif composite oreach 5 Controler omponent Composite a OOOO ee D Add entr e Component Component Remove entr e Component Component GetChild entr e index int children peratio Operation Add entr e Component Component Remove entr e Component Component GetChild entr e index int Le d corateur Decorator Ce motif sert ajouter de nouvelles fonctionnalit s un objet existant Il peut servir viter l accumulation
380. isation d pendance Lorsqu un cas d utilisation est en s alique cela veut dire qu il est abstrait Il repr sente une fonctionnalit g n rale utilis e par d autres cas d utilisation mais pas utilis e telle quelle Analyse technique statique Le but de cette d marche est de d finir la conception de l architecture de l applica tion c est dire les classes leurs m thodes attributs et l ensemble des relations entre tout cela Nous commencerons par identifier les objets dont nous aurons besoin puis nous les mettrons en relation par l interm diaire du diagramme de classes l ments de mod lisation utiles PHP 189 CHAPITRE 8 Les diff rents types de classes Un objet peut contenir des donn es entit ou mettre en uvre des fonctionnalit s contr le ou les deux dialogue La figure 8 9 donne une repr sentation graphique propos e par L Jacobson de trois types de classes e Une entit poss de des attributs et des accesseurs m thodes d acc s aux attributs Elle constitue l information persistante de l application e Un contr le met en uvre des fonctionnalit s et contient souvent la logique de l application Il poss de uniquement des op rations e Un dialogue peut repr senter un formulaire ou tout type d IHM Interface homme machine Il contient des attributs et des op rations permettant de traiter les donn es actions Figure 8 9 7 z Jp Trois types de classes Contr le O Dialogue
381. ise jour l ajout et la validation de donn es Outil tr s pratique voire indispensable pour le travail en quipe que vous pouvez d couvrir au chapitre 3 Certains diteurs permettent de travailler directement avec des fichiers h berg s sur un serveur distant via FTP Cet outil permet la gestion de t ches effectuer sur le code Il int gre souvent la g n ration automatique de t ches partir des balises TODO situ es dans le code et d erreurs d tect es par l analyseur syntaxique Ce syst me permet par un simple raccourci clavier d ins rer une ou plusieurs lignes de code pr d finies par exemple un commentaire un prototype de fonction ou une boucle Ces templates de code sont plus ou moins param trables selon les diteurs EE Organisation du projet conventions et outils PREMI RE PARTIE Fonctionnalit Les macro commandes L outil de d bogage Le refactoring assist Le gestionnaire de tests unitaires Le masquage de code Tableau 5 1 Fonctionnalit s utiles d un diteur PHP Description Une macro commande est compos e d une succession d actions l mentaires crire enregistrer copier coller etc qui peuvent tre lanc es automatiquement les unes la suite des autres Il permet de traquer de mani re fiable et rapide les erreurs l ex cution Cet outil n est pas toujours directement int gr l diteur mais il peut faire appel ce der nier en lui demandant d o
382. it Yahoo rss_url http rss news yahoo com rss world xml simplexml_load_file rss_url foreach xml gt channel gt item as item echo item gt title lt br gt n gt Un traitement simple et unifi de trois m tastructures objets documents tables Souplesse et simplicit sont les ma tres mots lorsqu il s agit de manipuler des tableaux des documents XML ou des objets Ces trois m tastructures maintenant parfaitement ma tris es par PHP sont l avenir de la manipulation des donn es infor matiques Les objets pour l architecture logicielle les tableaux pour les donn es structur es de petite taille les documents pour l interop rabilit et l organisation des donn es tout ceci est d taill dans le chapitre 11 20 Best Practices PHP Performances et mont e en charge Le noyau de PHP Zend Engine II Le noyau de PHP est le principal responsable des performances et des fonctionna lit s bas niveau telles que l approche objet la gestion de la m moire le comporte ment de l interpr teur de code et la qualit des opcodes CULTURE Que sont les tableaux d opcodes op ration codes l ex cution d un programme PHP se fait en plusieurs tapes il est d abord parcouru par un interpr teur et transform en tableaux d op rations l mentaires de bas niveau car tr s proches du langage machine Ces op rations l mentaires sont ensuite lues et ex cut es par un moteur
383. it et les performances de vos d veloppements tout en gagnant du temps et de l nergie Nous avons d j travaill sur le choix de votre outil principal l diteur Nous allons maintenant nous int resser aux autres Les outils d administration pour PHP voluent et se renouvellent rapidement Ce chapitre ne les num re pas en revanche il vous aidera trouver et choisir ceux qui correspondent vos besoins pour les utiliser de mani re optimale Dans un premier temps nous allons d couvrir ce qu est un outil d administration et ce qu il peut apporter un d veloppement en PHP Puis nous nous int resserons concr tement aux principaux outils d di s PHP les diteurs de base de donn es les gestionnaires de source de donn es les outils de d bogage et de monitoring REX Organisation du projet conventions et outils PREMI RE PARTIE Qu est ce qu un outil d administration Il est difficilement concevable de piloter un avion sans la pr sence d un tableau de bord de commandes et d indicateurs Le d veloppement d une application PHP compl te et efficace n cessite lui aussi un tableau de bord ad quat Figure 6 1 Utilit des outils d administration quipe de d veloppement lt lt T y Donn es 9J1n29S 5 Q f w a C a 2 Z A T Interfaces d dition Il existe plusieurs cat gories d outils d administration comme l illustre la fi
384. itre 9 Pratiques bannir Inclure dans les classes des donn es sp cifiques C est le cas par exemple lorsque vous d clarez en dur un chemin d acc s vers un r pertoire Lorsque vous porterez votre objet sur d autres applications ou d autres environnements vous risquez de devoir modifier votre classe A l chelle d une classe cette modification peut tre g r e sans difficult En revanche partir d une dizaine de classes vous aurez du mal ma triser toutes ces exceptions ER Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Privil giez le passage en param tres de ces donn es ou l exploitation des constantes magiques si possible __FILE__ CLASS etc Exemple d utilisation de constantes magiques class Controler public static function getClassConf return dirname _FILE__ __ CLASS__ ini Affiche chemin vers ce fichier Controler ini echo Controler getClassConf N gliger la visibilit des attributs et des m thodes La visibilit est garante de l int grit d un objet Certains attributs et certaines m thodes ne doivent pas tre accessibles de l ext rieur cela inciterait les d ve loppeurs faire des erreurs en acc dant des donn es ou des fonctionnalit s qui ne doivent pas faire l objet d acc s directs Dans la mesure du possible les attributs publics sont bannir Concevoir une biblioth que d objets homog
385. iverses tirage al atoire statistiques etc RETENR Soyez conscient des possibilit s qu offrent les fonctions li es aux tableaux Les fonctions de gestion des tableaux ont pour la plupart t cr es pour r pondre un besoin d utilisa tion courante sur toute structure que peut simuler un tableau PHP liste matrice association de valeurs etc Prenez le temps de lire et assimiler tout ce qui est rendu possible par ces fonctions vous viterez ainsi de r inventer la roue L illustration 11 2 dans la suite de ce chapitre met en avant les fonctions courantes et le lien suivant ren voie sur la documentation officielle de PHP Vous y trouverez un ensemble de fonctions utiles pour mani puler des tableaux gt http www php net manual fr ref array php Exploiter la souplesse et la simplicit des tableaux PHP Convertir des donn es en tableau Comme nous l avons vu PHP dispose de nombreuses fonctions de manipulation de tableaux N anmoins ce n est pas tout les tableaux sont tellement pratiques en PHP qu il existe galement de nombreuses fonctions de transformation de donn es vers les tableaux Un fichier une cha ne de caract res un document XML le contenu d un objet les enregistrements d une base de donn es tout peut tre export sous forme de tableau 254 Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Quelques exemples de fonctions de transformation vers un tableau
386. l ensemble de vos collaborateurs deviendront instables Une erreur valid e dans le d p t de donn es se propage chez les voisins qui mettent jour leur code r guli rement e Plus il y a de coquilles dans vos fichiers plus vous avez de chance d en laisser dans les versions fig es de votre application e Le d p t va rapidement augmenter en taille et l ensemble des coquilles vont y res ter vie car dans un d p t rien ne se perd Tester avant de figer une version Figer une version s inscrit dans un m canisme de maintenance d crit sur la figure 3 3 On parle galement d effectuer une mont e de version Cette op ration est effectu e une fois qu un objectif est atteint et que l application se trouve dans un tat consid r comme stable donc pr te tre livr e Toute mont e de version doit tre pr c d e de tests complets Cela permet d assurer une mont e sur un tat stable de l application Installer et utiliser un gestionnaire de versions n CHAPITRE 3 Figure 3 3 Mont e de version D velopper la version Tester la version courante a w gt aa et m canisme associ courante HEAD tests unitaires de recette Version Figer la version courante courante tag RELEASE_X_X_X stable x Packaging de la TA i Livraison en production version fig e Le num ro de version incr menter d pendra de la nature des op rations effectu es e S il s agit de quelques c
387. l on souhaite d velopper En revanche il faut beaucoup chercher pour trouver la ressource adapt e Il serait trop long de citer ici toutes les bonnes ressources disponibles il existe pour cela plusieurs sites Internet mettant disposition ces scripts avec de nombreuses informations utiles pour chacun d eux popularit qualit etc Quelques exemples d annuaires de sites gt http www hotscripts com PHP gt http www phpscripts fr net gt http www comscripts com scripts php mysql html Comment choisir des ressources fiables Pour vous guider dans vos choix il est important de conna tre quelques indicateurs qui font la qualit d une ressource e Elle est populaire beaucoup t l charg e et utilis e elle manifeste un int r t donc a des chances d tre r vis e et mise jour par de nombreuses personnes C est un signe de qualit de p rennit et de s curit e Elle est g n ralement tr s bien not e appr ci e les internautes sont assez prag matiques quand il s agit de juger le script est facile et pratique installer et uti liser e Elle est r guli rement mise jour par une quipe de passionn s plus le comit de d veloppement est solide plus le projet voluera vite et plus il a de chances de percer Choisir les ressources et les supports de donn es 161 CHAPITRE 7 S CURIT Pour la s curit de vos d veloppements gardez la ma trise 1
388. l primaire Les locutions Class dans et R dig par sont appel es des relations ou associations Les relations entre entit s sont quantifi es par des num ros appel s cardinalit s On dit souvent que Class dans est une relation un plusieurs car un livre peut correspondre une seule cat gorie alors qu une cat gorie peut correspondre plu sieurs livres On dit que R dig par est une relation plusieurs plusieurs car un livre peut cor respondre plusieurs auteurs et inversement Cette relation particuli re n cessite la cr ation d une table de liaison suppl mentaire voir le mod le physique de don n es plus loin Il existe galement des relations un un et des relations multiples trois ou qua tre pattes qui font l objet de propri t s particuli res que nous n aborderons pas ici mais que vous trouverez dans les ouvrages sp cialis s cit s plus haut Mod le physique de donn es MPD Le mod le physique de donn es MPD d crit une base de donn es d un point de vue technique Ce mod le donne toutes les informations n cessaires et suffisantes pour construire les scripts de g n ration de la base de donn es Le mod le physique de donn es correspondant notre exemple pr c dent est illustr sur la figure 7 7 Dans notre exemple e Les l ments book author sont des tables e La liste book_id nb_page d finit les champs de la table book e Les relations category_id c
389. l make et un compilateur Pr paration de l espace de travail cd ext mkdir productmanagement cd productmanagement Dans un deuxi me temps nous allons cr er nos fichiers sources l mentaires 1 Le fichier config m4 utile la g n ration de l environnement de compilation contenant les informations suivantes Fichier config m4 PHP_ARG_ENABLE productmanagement whether to enable ProductManagement support enable productmanagement Enable ProductManagement support if test S PHP_PRODUCTMANAGEMENT yes then AC_DEFINE CHAVE_PRODUCTMANAGEMENT 1 Whether you have ProductManagement PHP_NEW_ EXTENSION productmanagement productmanagement c ext_shared fi 2 Le fichier php_productmanagement h un en t te C contenant les d clarations des fonctions de notre programme EJ Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Fichier php_productmanagement h ifndef PHP_PRODUCTMANAGEMENT_H define PHP_PRODUCTMANAGEMENT_H 1 define PHP_PRODUCTMANAGEMENT_VERSION 1 0 define PHP_PRODUCTMANAGEMENT_EXTNAME productmanagement PHP_FUNCTION pm_get_version extern zend_module_entry productmanagement_module_entry define phpext_productmanagement_ptr amp productmanagement_module_entry endif 3 Puis le fichier productmanagement c contenant le corps des fonctions de notre extension Fichier productmanagement c ifdef HAVE_CONFIG_H include config h endif include php h i
390. l Incidents line description trait s EN EC DS CCC CAE me Ci rossa appi vision byo nomai _shop reg 919 Ca fosse 4 2 fon O on mn EBEA tia type description maii ip_ada por protoc 14 appl Development team smtp C2 oxp Administration team exxx 45 wddx ENKA 1 2 3 4 5 5 ASTUCE Utiliser un gestionnaire de tests pour suivre les incidents Si vous n avez pas encore choisi la mani re dont vous allez d velopper vos moniteurs d incidents sachez que vous pouvez utiliser un gestionnaire de tests tel que Simple TEST ou PHPUnit Non seulement vous aurez disposition des outils de tests pr d velopp s mais vous disposerez galement d une interface L id e est de construire un jeu de tests qui correspond vos moniteurs Voici un exemple qui v rifie si les disques d un serveur Linux sont bien utilis s moins de 95 de leur capacit Classe de test des disques de la machine class DiskTester extends UnitTestCase Tableau contenant la taille des disques private disks arrayO function __construct this gt UnitTestCase Assurer la disponibilit s curit et maintenance 49 CHAPITRE 16 R cup ration des disques pr sents sur la machine et stockage dans l attribut disks function testLoadDisksQ cmd df 1 grep cmd awk print 5 4 cmd sed s e
391. lace au sein de sa structure en particulier eXtreme Programming XP un ensemble de pratiques communes qui s inscrit dans le cadre des m thodes agiles d crites au chapitre 2 T moignages d utilisateurs 41 CHAPITRE 18 Pouvez vous nous parler de la m thode eXtreme Programming que vous pratiquez Depuis que je pratique l eXtreme Programming je suis convaincu par l efficacit de la m thode L eXtreme Programming XP est une m thode agile efficace qui r pond tr s bien aux caract ristiques des technologies mergentes du Web D abord tout seul et d sor mais en bin me j essaie de suivre les pratiques pr conis es par la m thode le d ve loppement pilot par les tests les cycles de d veloppement la red finition r guli re des besoins la simplicit les remaniements etc XP me permet d tre plus transparent avec mes clients et de faire progresser leurs produits Je suis capable de les mettre jour r guli re ment en fonction de l volution des besoins Dans cette optique l architecture de mon code est pens e pour tre tr s facilement remaniable et adaptable J entretiens avec mes clients et mes d veloppeurs des relations de confiance Tout doit avoir une explication tout niveau En d autres termes la magie induite par le r sultat concret des d veloppements ne doit tre destin e qu l utilisateur final XP est une m thode extr me dans la mesure o
392. lace_cal1lback G n ralement les fonctions PCRE sont plus performantes et compl tes que les fonctions POSIX Si vous navez pas choisi votre camp pr f rez PCRE Enfin vient l criture de l expression proprement dite Nous ne pourrons pas d tailler ici l art et la mani re d affiner vos expressions il y a de nombreux ouvrages pour cela En revanche voici quelques bons trucs savoir e Les d limiteurs b d w etc sont acteurs de l tendue des possibilit s offertes par les expressions r guli res e Les diff rents symboles possibles digit 1 etc et leur comportement sont regroup s en plusieurs cat gories e les d limiteurs 4 e les quantificateurs e les intervalles de reconnaissance e les classes de caract res 204 Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE e les classes pr d finies space 1 etc e et l alternative R F RENCES Pour apprendre les expressions r guli res et se perfectionner Il existe de nombreux ouvrages consacr s cela Parmi eux 11 Ma trise des expressions r guli res de Jeffrey E F Friedl aux ditions O Reilly PHP 5 Avanc chapitre consacr aux expressions r guli res de Cyril Pierre de Geyer et ric Daspet aux ditions Eyrolles Un bon point galement pour ce site en fran ais tr s simple et pratique recommand pour apprendre et
393. lassique pr ventive temps g Figure 2 6 Int r t d une m thode de conception adaptative Perrick Penet est pr sident de l AFUP Association fran aise des utilisateurs de PHP Vous trouverez au chapitre 18 travers son t moignage comment la soci t NoParking en est arriv e adopter l eXtreme Programming dans le cadre de ses d veloppements en PHP MVC Model View Controler traduit par Mod le Vue Contr leur est un motif de conception logicielle largement r pandu Cr dans les ann es 1980 par Xerox PARC pour le langage Smalltalk 80 il a t par la suite recommand comme mod le pour la plate forme J2 E par l interm diaire de l outil Struts gt http struts apache org 4 Organisation du projet conventions et outils PREMI RE PARTIE Aujourd hui son utilisation avec PHP dont les caract ristiques font qu il est facile de s garer dans des m langes d favorables la lisibilit des d veloppements est de plus en plus populaire et b n fique MVC impose une s paration en trois types de traite ments diff rents e Le mod le se compose d l ments qui mettent disposition des fonctionnalit s de traitements et d acc s aux donn es Il est tr s important de comprendre que les d veloppements effectu s dans le mod le n ont aucune influence sur la mani re dont les donn es vont tre pr sent es La vue d termine comment seront pr sent es les donn es Nous verrons
394. le m tafichier RCS correspondant dans le d p t tat assign la version via la commande cvs admin s Identifiant de la personne qui a verrouill le fichier PROGRAMMATION Exploiter les cl s de substitution dans le code PHP Les cl s de substitution se mettent g n ralement dans des commentaires PHP mais rien ne vous emp che de les utiliser galement dans du code PHP comme le montre l exemple suivant cvs_id Id Ainsi vous r cup rez dans votre code PHP des informations sur la version en cours de votre fichier Faites seulement attention ce que ce m canisme ne g n re pas d erreurs de syntaxe Clients graphiques Il existe une multitude de clients graphiques simplifiant l acc s au d p t de donn es CVS Ces clients peuvent tre des programmes autonomes ou attach s un diteur comme Eclipse Parmi les clients autonomes les plus utilis s sont TortoiseCVS pour son int gration astucieuse l explorateur Windows WinCVS un client tr s complet et Cervisia un bon client graphique sous Unix Linux Quelques liens utiles gt http www tortoisecvs org gt http www wincvs org gt http www kde org apps cervisia gt http www maccvs org Mettre en place l environnement d ex cution pour le d veloppement Parmi l ensemble des outils utiles au d veloppement de vos applications l environne ment d ex cution est l un des plus importants En PHP l installatio
395. le montre l exemple suivant Utilisation d une classe sans l instancier une alternative au singleton lt php abstract class Video0bject const TYPE HDV class VidCam extends Video0bject private static model JVC GY HD100 Interdiction d instancier cette classe private function __construct D finit la propri t model public static function setModel model self model model parent TYPE Renvoie la valeur de la propri t model public static function getModel return self model renvoie la chaine suivante Sony HVR Z1 HDV VidCam setModel Sony HVR Z1 echo VidCam getMode1 0 gt L instanciation ayant un co t l utilisation de l op rateur de r solution de port e Paamayim Nekudotayim peut s av rer int ressant lorsque votre algorithme sollicite beaucoup les ressources d une m me classe Acc l rer l acc s aux objets persistants Votre premier objectif sera d viter de recr er ces objets chaque requ te Il faut donc les rendre persistants pour l ensemble de vos visiteurs Pour cela nous allons utiliser les caract ristiques des sessions Optimiser le mod le pour PHP obj register php partage l objet people lt php Cette directive ainsi que de nombreuses autres peut tre configur e dans php ini session_cache_limiter private class people public firstName Guillaume public
396. le version est stabilis e voir la RELEASE_2_0_0 dans notre exemple il est d usage de la passer sur la branche principale de mani re la rendre officielle Cette op ration s appelle une fusion merge La nouvelle version vient prendre la place de l ancienne qui devient alors obsol te et peut ventuellement tre reprise sur une branche de maintenance Le tag MAINT_2_0_0_BP est de m me nature que son homologue QA_2_0_0 _BP il sert indiquer un point de d rivation op r pour des op rations de maintenance minimes Dans la plupart des cas il est recommand de cr er une branche pour faire voluer l identifiant de maintenance Cette branche servira combler des failles de s curit ou des bogues li s une r vision Une fusion peut tre op r e afin de r percuter ces modifications sur la branche principale dans la mesure o ces modifications ne cr ent pas de conflits avec les volutions courantes Installer et utiliser un gestionnaire de versions Travailler plusieurs sur un projet PHP implique une mise en commun du code source Pour cela plusieurs solutions simples peuvent tre mises en uvre sans outil sp cialis La plus courante sera de partager les fichiers sur un r seau Cependant un simple partage Samba ou FTP reste limit partir d une quipe de trois membres la solution doit tre cart e En effet revenir en arri re sur des tra vaux implique souvent des pertes de donn es et l
397. le vis vis de l entr e de PHP dans le monde professionnel Bien s r Zend Technologies a t lanc e en 1999 avec comme objectif de promou voir PHP dans le monde professionnel tout en avan ant sur le projet lui m me La seconde t che a t relativement ais e je pense que nous l avons men e bien et con tinuons toujours progresser aujourd hui La premi re t che a t plus compliqu e elle a pris deux orientations fournir une valeur ajout e logicielle aux entreprises qui utilisent PHP et objectif important galement convaincre les g ants de l industrie de soutenir PHP Les outils l environnement d ex cution et les services qui constituent l offre de Zend q ont rendu PHP un grand service en lui permettant d tre pr sent sur un march qu il aurait t impossible d atteindre autrement Je suis heureux d annoncer qu aujourd hui nous avons des signes tr s visibles de chan gements dans la perception de PHP en milieu professionnel Le fait qu Intel et SAP aient investi dans Zend qu IBM et Oracle s investissent galement dans PHP par l interm diaire de Zend et que des entreprises comme McAfee recrutent maintenant des ing nieurs certifi s Zend confirme une volution importante de la mani re dont les grandes entreprises per oivent PHP dans le monde Pour la premi re fois depuis des ann es nous commen ons voir une progression top down de la direction aux employ s
398. leXML 258 avantages et limites 259 d finition 258 principe 258 simplexml_load_file 19 simplicit lois de XP 35 m thodes agiles 33 singleton motif 229 468 Best Practices PHP multiple 230 plusieurs singletons 230 Sitellite framework 156 Smarty 337 classe d initialisation 338 pour les designers 339 pour les d veloppeurs 339 template exemple 339 SMS commentaire 323 sn surname LDAP 177 SOA architecture 353 SOAP 275 355 d finition 258 description 356 exemple de client 357 principe 355 proxy 237 serveur g n ration automatique 357 social engineering 413 d finition 413 pr vention 413 Solar framework 156 source de donn es 141 diteurs OpenLDAP 141 utilit 141 sp cifications fonctionnelles 49 techniques 50 sp cificit vs g n ricit 218 SPL Standard PHP Library 209 it rateur 240 observateur 244 SQL injection s curit 410 SQL Server 166 SQLite 165 caract ristiques 165 choix 165 exemple criture en m moire 292 SQLiteManager 140 Squid 373 standard adoption de 219 statique m thode propri t 265 STB Sp cifications techniques du besoin 50 st r otype 189 191 strategy motif 245 Studs framework 156 surcharge m thode 207 propri t s et m thodes 206 surveillance applicative 422 mise en place d un m canisme 420 outils 420 r seau 420 syst me 420 syst me d archivage 415 d exploitation 395 environnement applicatif 395 monitoring 138 surveillan
399. ler des donn es par le biais de formalismes et d outils dif f rents et compl mentaires Le tableau 11 1 r sume les avantages et les limites li s aux trois m ta structures que nous nous proposons d tudier dans ce chapitre M ta structure Les tableaux manipulation pratique de donn es Les documents classement formatage et stockage de donn es Les objets manipulation organis e de donn es Tableau 11 1 Avantages et limites des m ta structures Avantages Leur souplesse en PHP permet de manipu ler un grand nombre de donn es et d effectuer diverses op rations tris filtres boucles appels de fonctions etc Les tableaux PHP peuvent manipuler n importe quel type de donn es Le stockage et le transfert de donn es d une entit applicative une autre sont possibles gr ce aux documents Ils sont la mati re de l interop rabilit Le format XML permet un stockage organis et lisible du contenu Ils se composent de donn es attributs et de fonctionnalit s m thodes Ils sont le principal acteur d une architec ture logicielle solide et favorisent l int grit des donn es contr les de type visibilit etc Inconv nients limites Les tableaux ne sont pas associ s un mod le comme le sont les objets avec les classes ou les documents XML avec la DTD Utiliser des tableaux complexes peut engen drer des probl mes d int grit et de compr hension du
400. les sont mises en place manuellement au moment o les d veloppeurs jugent qu une version doit tre fig e l inverse cette op ration d attribution d une version est automatique sur les fichiers La figure 3 2 est une reprise de la figure 2 16 du chapitre 2 Nous distinguons les versions de fichiers 1 1 1 2 1 3 et les versions de l application appliqu es par l op ration tag RELEASE_X_X_X Les diff rentes op rations effectu es ont galement t report es sur la figure dans des bulles import add remove commit et tag Installer et utiliser un gestionnaire de versions EC CHAPITRE 3 Figure 3 2 Versions de fichiers ne se bia et versions applicatives Modification du ee 5 fichier 4 Commit v1 2 Clich RELEASE_1_0_0 dela N ESS 4 version en cours Ctag_ Fichier 1 Paper v1 1 V1 2 3 Modification du fichier 2 Fichier2 Rna et retrait du fichier 3 Commit De Version courante Version 1 0 0 de l application de l application 1 3 v12 RELEASE _1_0_0 2 s v1 2 v1 1 3 Modification du fichier 1 A a 2 et ajout du fenier 4 Commit Fichier 1 femove Fichier 4 S EA 1 2 p te 1 ER du por mon ER R gles de bonne conduite Pour compl ter cette section les bonnes pratiques li es aux conventions adopter pour la gestion des versions sont disponibles au chapitre 2 Un d p t ne supprime rien Dans le cadre de votre application de streaming vid
401. lexit de votre environnement CULTURE Quelques modules d Apache utilis s avec PHP e mod layout affiche automatiquement un contenu au d but et ou la fin des pages web permettant de contr ler l aspect global d un site ou d ajouter des ban ni res publicitaires e mod_rewrite autorise la mise en place de r gles de r criture d URL Lorsqu une URL correspond un motif d fini par une expression r guli re elle peut tre modi fi e et reparam tr e automatiquement Cette op ration est visible ou transpa rente via proxy RewriteEngine On RewriteRule A php http www openstates com php 1 P e mod_proxy met en place un m canisme d acc s un site ou une partie de site partir d une URL alternative Par exemple vous pouvez installer un proxy pour acc der votre intranet depuis Internet jusque l accessible par l interm diaire d une adresse interne telle que http localhost intranet ProxyPass intranet http localhost intranet e mod_php celui ci vous pouvez en user et en abuser volont Pour en savoir plus sur les modules disponibles pour Apache il existe une biblioth que officielle l adresse suivante gt http modules apache org Le serveur et sa version Le type de serveur HTTP que vous utiliserez ainsi que sa version ont une incidence plus ou moins marqu e sur le comportement de vos applications Comme nous l avons vu pr c demment plus vos applications sont ind pendant
402. lications PHP Ean CHAPITRE 2 e Aux caract ristiques des diff rents intervenants Chaque intervenant doit faire face des contraintes travailler sur plusieurs projets en m me temps par exem ple poss de des atouts une sp cialit sur laquelle il peut intervenir en profon deur et une personnalit dont on peut tenir compte dans la mise en place des proc dures et du planning La figure 2 13 met en avant un exemple de rythme de que Pon peut donner un projet PHP On y retrouve certains aspects des m thodes agiles Libre vous d adapter un rythme et une m thode aux caract ristiques de votre projet et aux res sources dont vous disposez Qui collabore avec qui Un premier exemple de collaboration vous a t donn dans notre tude pr c dente d eXtreme Programming Nous avons galement tabli la liste des r les que l on peut rencontrer dans un projet de d veloppement web en PHP Livraisons Configuration de l environnement Mise en lt rations d ex cution pour la production PSG J production Intensit des tests ES Intensit du uoronposd Intensit de l analyse conception sp cifications Loi Lo2 o3 Los tos Loe Lo7 Los Loos t10 t11 12 3 Livraisons en environnement de recette Figure 2 13 Proc dures et it rations li es un projet tablir une strat gie ou un plan de collaboration n est pas l objectif le plus difficile at
403. lisations traitement des erreurs etc 3 Le contr leur frontal d termine quelle s action s l mentaire s la requ te utilisateur est associ e puis fait appel cette ces action s 4 L action l mentaire appel e d termine son tour les donn es extraire Il fait alors appel aux l ments du mod le qui assurent les extractions de ces donn es et le lance ment des op rations associ es 5 Afin d assurer le dialogue entre le contr leur et le mod le des ressources sont utilis es appel es objets m tier Les l ments du mod le font galement appel aux services dont ils ont besoin pour assurer l acc s aux sources de donn es et effectuer divers traitements gestion des erreurs etc 6 Les objets DAO sont les seuls pouvoir effectuer des appels natifs aux sources de don n es sur demande du mod le l mentaire correspondant 7 L action l mentaire d termine quels seront les templates solliciter pour assurer l affi chage des donn es r cup r es 8 Le contr leur frontal en pr sence des donn es et des r f rences aux templates fait appel au moteur de templates charg de lui renvoyer les donn es de pr sentation 9 Le moteur de templates fusionne donn es et gabarits correspondants puis renvoie au contr leur frontal les donn es de pr sentation HTML PDF obtenues 10 Le contenu ainsi g n r est retourn l utilisateur via le contr leur frontal Organisation du projet c
404. liter la maintenance de votre envi ronnement et assurer la fiabilit de vos applications Pr voir et surveiller les incidents possibles Nous distinguerons deux cat gories d incidents e Les incidents applicatifs dus des erreurs de d veloppement PHP e Les incidents syst me dus des probl mes de l environnement d ex cution Assurer la disponibilit s curit et maintenance EUX CHAPITRE 16 Figure 16 5 M quipede DM PERSO ue l NS PNR RES Une liste d incidents one Incidents Applicatif Incidents Syst me que vous pouvez g rer e l Ex cution Disques M moire Editeurs i Erreurs fatales D bordements Blocages Tickets 4 Applications i Echec des tests de recette R seau Probl mes d acc s Encombrement i 1 Disfonctionnements quipe de 4 Ralentissements de BP d exploitation F l 7 Ticket LE i D mons Services Ressources CPU i s OO aall Arr ts involontaires Encombrement Etats anormaux Disfonctionnements i Routines Mat riel i Erreurs des Disfonctionnements t ches planifi es R glages anormaux i l I Les incidents applicatifs sont les erreurs d ex cution et les dysfonctionnements de l application Par exemple cela peut tre une erreur engendr e par PHP cause d une division par z ro ou le dysfonctionnement d un formulaire parce qu un calcul de date s av re inefficace Les incidents syst me conce
405. logiciel qui se dit fabuleux et qui l est DBDesigner dit par fab FORCE Cette application est efficace pour la cr a tion et la maintenance de mod les physiques Elle peut piloter votre SGBD syn chroniser votre base et son mod le et effectuer du Reverse Engineering avec MySQL Oracle MSSQL et les bases ODBC gt http www fabforce net dbdesigner4 Figure 7 8 book Un mod le physique book _id INTEGER book id redaction D de donn es cr Q category_id INTEGER FK book_id INTEGER FK avec DBDesigner Q book_title VARCHAR 127 I author_id INTEGER FK Q resume TEXT Q date DATETIME Q nb_pages INTEGER 11 author_id category_id s author author_id INTEGER category een Q firstname VARCHAR 255 category VAAGOAR Q lastname VARCHAR 255 Q category_tit a s CHAR 255 tel VARCHAR 20 Q description Q status_ CHAR Q address VARCHAR 255 Choisir les ressources et les supports de donn es EE CHAPITRE 7 Enfin Windesign un autre outil tr s efficace concurrent de PowerAMC pour la mod lisation de bases de donn es et davantage UML Business process interfaces etc http www win design com en WinDesign htm Choix d un format de donn es normalis Qui n a jamais t confront au choix du format pour ses donn es Vous voulez manipuler des produits pour votre magasin en ligne traiter des articles de journaux ou stocker des donn es sur votre site personnel que
406. ls de la requ te utilisateur Par exemple si l utilisateur demande une liste de r sultats suite l interrogation d un moteur de recherche le contr leur frontal d tectera qu il s agit d une demande d affi chage de r sultats et l action associ e d tectera les param tres de pagination et la nature des donn es extraire et afficher Les services Ils sont un ensemble de biblioth ques et d objets repr sentant des fonctionnalit s utiles de lapplication Ces services peuvent tre tout simplement des extensions PHP des composants de la biblioth que PEAR ou des classes sp cifiques Il est de bon ton de limiter le nombre de services afin d assurer des performances optimales et viter l apparition de code mort KJ Organisation du projet conventions et outils PREMI RE PARTIE ASTUCE Mise en uvre Dans une architecture MVC le r le du contr leur frontal est d intercepter toutes les requ tes envoy es par le client Comment se d brouiller alors pour que n importe quelle requ te soit automatiquement redi rig e vers ce contr leur Une astuce tr s simple consiste configurer le serveur HTTP pour qu en cas d erreur 404 aucun fichier disponible la requ te soit redirig e sur un fichier en l occurrence celui du contr leur frontal Si seul le contr leur frontal est dans la racine des documents du serveur HTTP DocumentRoot toutes les requ tes sans exception passeront par lui Appel d une
407. lus impliqu e dans l volution de PHP Ses deux co fondateurs Andi Gutmans et Zeev Suraski sont auteurs des noyaux de PHP depuis sa version 3 jusqu la plus r cente Zend Engine Il Zeev Suraski directeur technique de Zend Technologies et l ment cl de l volu tion de la plate forme PHP a accept de r pondre nos questions Voici son entre tien traduit de l anglais Pouvez vous vous pr senter Mon nom est Zeev Suraski Je suis co fondateur de Zend Technologies et j occupe actuellement le poste de directeur technique En dehors de cela Jaime la piscine les voyages l tranger et bien entendu travailler sur PHP Pouvez vous nous expliquer en deux mots votre parcours avec PHP Historiquement je suis un des architectes de PHP Avec Rasmus Lerdorf et Andi Gutmans nous sommes responsables de la mani re dont PHP volue aujourd hui J ai d couvert le projet PHP FI toute premi re version de PHP d velopp e par Rasmus Lerdorf par hasard en 1997 Une action menant une autre nous avons finalement d cid de lancer ce projet PHP qui maintenant est devenu c l bre Quels sont selon vous les trois avantages qu ont les professionnels utiliser PHP Je suis tent de dire la facilit d utilisation la facilit d utilisation et la facilit d utilisation Je pourrais galement mettre en avant la fiabilit de la connectivit aux bases de donn es et les performances de PHP
408. lutions pour pallier ce d ficit e Pour ma triser compl tement la mise en cache vous pouvez utiliser une application sp cialis e de mise en cache comme APC ou JPCache e Certains environnements d ex cution comme la Zend Platform proposent des solutions de mise en cache param trables travers une interface e Enfin un serveur HTTP comme Apache propose un module de mise en cache performant bien que moins personnalisable que les autres Exemples d utilisation avec Smarty Smarty est un moteur compilateur de templates de r f rence Il est performant per sonnalisable et couvre les besoins d une large palette d applications Cet outil se d mocratise de plus en plus en entreprise car il fait ses preuves en ce qui concerne tant les performances que la facilit d utilisation http smarty php net On lui reproche quand m me quelques d tails Les puristes n aiment pas trop la qua lit du code g n r dans les templates compil s et ne voient pas toujours l int r t d utiliser un m ta langage la place de PHP lui m me Par ailleurs bien que son m ta langage soit simple et personnalisable les graphistes qui connaissent PHP reprochent Smarty d introduire un nouveau langage apprendre En pratique cela n emp che pas Smarty d tre un moteur de templates convain quant Son adoption est rapide gr ce la documentation en ligne EJ Bonnes pratiques de d veloppement en PHP TROISI ME
409. m books key ref item book lt li gt lt strong gt refl lt strong gt book lt 1i gt foreach lt ul gt lt body gt lt html gt Ce m ta langage est traduit en PHP avant d tre g n r en HTML C est le r sultat de cette traduction en PHP que l on appelle un template compil La ver sion compil e du template pr c dent est la suivante Template compil du gabarit pr c dent lt html gt lt head gt lt title gt lt php echo page gt title gt lt title gt lt head gt lt body gt lt h1 gt lt php echo page gt title gt lt h1 gt lt ul gt lt php foreach books AS ref gt book gt lt li gt lt strong gt lt php echo ref gt lt strong gt lt php echo book gt lt li gt lt php gt lt ul gt lt body gt lt html gt Le template compil peut tre simplement appel avec le mot cl include Nous verrons plus loin qu un template compil est caract ristique d un moteur proposant un m ta langage diff rent de PHP Le premier moteur de templates que vous pouvez utiliser est PHP lui m me Certains moteurs proposent galement des mises en cache Ce n est pas le template qui est mis en cache mais le r sultat d une compilation entre des donn es et un tem plate Dans le cas de la compilation il y a au maximum autant de templates compil s que de templates En revanche pour la mise en cache il exi
410. mages Respectez ensuite cette r gle ne mettez pas vos images dans un dossier image ou Images e La gestion des performances mise en cache des images par exemple dans le dossier images ressources allou es aux applications etc e Les fonctionnalit s d finissez les modules dont vous avez besoin En revanche vitez d en avoir trop Une configuration simple est souvent beaucoup plus stable et fiable qu une configuration jonch e de goodies La plate forme PHP Elle concerne l ex cutable PHP Cet ex cutable est loin d tre ind pendant c est d ailleurs pour cette raison que l on parle souvent et juste titre de plate forme Il est souvent li des modules plus ou moins nombreux au serveur HTTP et au sys t me d exploitation Les caract ristiques de la plate forme PHP sont d terminantes Le jeu de fonctions le comportement de l interpr teur les performances et la s curit sont autant de sujets tributaires de ces caract ristiques D finition des exigences pour l exploitation QUATRI ME PARTIE La version de PHP Tout utilisateur assidu de PHP conna t les impacts li s aux changements de version notamment au niveau du moteur Ces impacts sont de tr s bonnes raisons d entre prendre des d veloppements agiles facilement remaniables refactorisables dont il est question au chapitre 2 Le bouleversement du moment est d au passage de la version 4 la version 5 D autres diff r
411. mais ce ne sont pas les uniques fonc tionnalit s de la plate forme Le principal atout de PHP est sa facilit d utilisation qui se traduit en une adapta tion rapide des temps de d veloppement courts une maintenance facile des co ts r duits etc T moignages d utilisateurs a CHAPITRE 18 Quels sont au contraire les trois points faibles que PHP devrait am liorer Comme chaque projet open source PHP r agit la demande des utilisateurs Sur le moment il me serait difficile de trouver les trois points faibles de la derni re ver sion de PHP puisque nous essayons de r soudre un par un les probl mes au fur et mesure qu ils sont d couverts Les fonctionnalit s que nous avons ajout es PHP 5 0 une prise en charge com pl te pour XML et les services web ont t longtemps attendues L absence de couche d abstraction de base de donn es tait galement un point faible mais il a t combl avec PHP 5 1 L internationalisation galement longuement demand e fera partie de PHP 6 Se documenter sur les fonctionnalit s cl s qui feront leur apparition dans les futures versions de PHP est un bon indicateur de points actuellement manquants Quelles sont selon vous les qualit s requises pour tre un bon d veloppeur PHP Les points auxquels je pense ne sont pas n cessairement li s PHP mais au d ve loppement en g n ral et probablement une grande diversit de m tiers Bien s r
412. mani re dont la classe doit s afficher lorsqu on l appelle avec echo ou print Un exemple avec cette m thode magique est disponible au chapitre 11 dans la section Des objets aux documents XML La m thode _cloneQ est appel e juste avant le clonage d un objet Elle perme La m thod Tone C est appel e just t le clonage d un objet Elle p t par exemple d incr menter un identifiant ou d effectuer une modification n ces saire avant l appel de la fonction clone Optimiser le mod le pour PHP ET CHAPITRE 9 De mani re g n rale les m thodes magiques sont nomm es avec un double signe de soulignement underscore __ Elle simplifient et fiabilisent les d veloppements d o l importance de les conna tre Les m thodes magiques sont abord es dans la documentation officielle de PHP l adresse suivante gt http www php net manual fr language oop5 magic php La r flexion Cette discipline est tr s int ressante pour tout ce qui concerne les travaux reverse engineering Il est possible par exemple d impl menter la cr ation de fichiers d import export UML pour cr er les diagrammes correspondant l architecture de votre application ou mettre en place une documentation de votre code g n r e en temps r el gt http www php net manual fr language oop5 reflection php D autres goodies de la Standard PHP Library SPL Cette biblioth que disponible en standard dans PHP 5 d
413. ment Pratiquer r guli rement le remaniement a deux avantages vous maintenez une structure coh rente et lisible du code source e vous ma trisez tout moment l architecture de votre code ce qui vous permet de d velopper plus proprement Si vous utilisez une m thode agile comme eXtreme Programming o Crystal clear voir chapitre 2 vous pouvez facilement int grer une op ration de remaniement chaque it ration Faites le de pr f rence avant d entamer des mises jour afin de partir sur des bases solides Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Si vous pensez mettre en attente vos d veloppements n h sitez pas remanier votre code juste avant de l abandonner Vous veillez ainsi ce qu il soit lisible afin de ne pas perdre de temps lorsque vous le reprendrez long terme TENR Niveaux de remaniement Une op ration de remaniement peut tre class e dans plusieurs cat gories en fonc tion de la teneur du travail effectuer sur le code e Niveau 1 modification de la pr sentation dans le but d am liorer la lisibilit du code indentation alignement des listes de valeurs etc et des commentaires e Niveau 2 modification de l algorithme consistant effectuer des petites retouches sans alt rer la structure s paration de boucles am lioration d une con dition remplacement d un passage de valeur par un passage de r f rence etc e Niveau 3 r organisation de l
414. mit 8M G n ralement la m moire maximum allou e pour chaque requ te ne devrait pas d passer cette valeur de 8 Mo pour la plupart des applications En fonction de vos besoins et des ressources m moire dont vous disposez vous pouvez la modifier L ensemble des directives de gestion des erreurs En production d voiler ses erreurs l utilisateur n est pas tr s diplomate il ne com prendra pas toujours ce que vous voulez lui dire L environnement d ex cution ER CHAPITRE 15 Il est recommand de loguer les erreurs Vous pouvez r gler le niveau de mani re ce que PHP ne traite que les erreurs fatales pour viter l encombrement du fichier de log moins que ce dernier ne soit r guli rement nettoy en exploitant par exemple le d mon de rotation des logs avec error_log syslog ou que la directive ignore_repeated_errors soit On Voici quelques configurations pour le traitement des erreurs en production Une configuration d erreur qui ne tient compte que des erreurs fatales error_reporting E_COMPILE_ERROR E_ERROR E_CORE_ERROR display_errors Off log_errors On ignore_repeated_errors Off ignore_repeated_source Off error_log space log php 1log Une configuration d erreur classique li e au d mon syslog error_reporting E_ALL amp E_NOTICE display_errors Off log_errors On ignore_repeated_errors On ignore_repeated_source Off error_log syslog magic _quotes_ gpc ru
415. modification du code source de PHP tape 1 mise en place du lien Pour mettre en place ce lien nous allons faire une petite modification dans le fichier main main c du code source de PHP Dans la fonction php_error_cb cherchez la d claration de la variable error_format Vous devez modifier cette d claration ainsi que la ligne suivante php_sprintf pour ins rer votre lien comme le montre l exemple suivant faire tenir en deux lignes Modifications effectuer dans le fichier main main c char error_format PGChtml_errors s lt br gt n lt b gt s lt b gt s in lt b gt s lt b gt on line lt b gt d lt b gt lt br gt n s lt a href http 1ocalhost loademacs php f s amp 1 d target _blank gt Editer cette erreur avec emacs lt a gt lt br gt n s n s s in s on line d n s php_printf error_format STR_PRINT prepend_string error_type_str buffer error_filename error_lineno STR_PRINT append_string 304 Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE error_filename error_Tlineno Une fois cette modification effectu e recompilez PHP et relancez votre serveur HTTP Lorsqu une erreur appara t quelle que soit sa nature elle devrait faire appa ra tre le lien diter cette erreur avec emacs Recompilation de PHP make make install apachectl restart tape 2 mise en place du client Le client est le fichier 10oademacs php qui est appel
416. motifs de conception ou design patterns Ce sujet est vaste et il existe autour de cela de nombreux ouvrages Dans ce chapitre nous nous contenterons de pr senter les principaux motifs et d expli quer leurs r les Leur ma trise est un atout consid rable que tout d veloppeur objet peut acqu rir Il ne tient qu vous de faire l effort d en comprendre la philosophie ER Mod lisation en UML pour PHP DEUXI ME PARTIE quoi servent les motifs de conception Les d veloppeurs objet exp riment s se sont aper us que en ce qui concerne Parchi tecture des caract ristiques similaires apparaissent dans leurs mod les r pondant des probl matiques communes et pr cises Les motifs de conception ont t introduits par l architecte Christopher Alexander dans les ann es 1970 Leur but est de formaliser les caract ristiques r currentes les expliciter et proposer pour chacune d elles des pratiques pour une mise en uvre effi cace R F RENCES Mise en pratique des motifs de conception avec PHP Ce sujet tant vaste il ne sera pas possible dans ce chapitre de proposer des exemples de code sur cha que motif Pour la mise en pratique il existe un livre d di aux motifs de conception pour PHP en anglais phplarchitect s Guide to PHP Design Patterns par Jason E Sweat aux ditions phplarchitect nanobooks Vous trouverez galement sur Internet des exemples de code sur les motifs abord s dans ce cha
417. n o uid mail inetOrg Person mobile homePhone displayName etc 4 Attrs inetOrgPerson status birthday kernel phpinetOrgPerson RE af RETENIR Conna tre les abr viations utilis es avec LDAP Les attributs des classes LDAP sont jonch es d abr viations ou dc cn etc Ces notations ne sont pas tr s agr ables au premier abord En revanche comme elles sont tr s utilis es la notation courte permet de gagner du temps Voici la liste de ces notations e cn common name le nom d usage Ex Guillaume Pon on e dc domain component un n ud d un nom de domaine Ex com eyrolles e sn surname le surnom bien qu utilis galement pour le nom d une personne Ex Pon on e locality name lieu dans lequel se trouve la personne e o organization organisme d appartenance de plus haut niveau Ex Librairie Eyrolles e ou organization unit service ou sous partie d un organisme Ex Collection Architecte des livres informatiques Eyrolles e uid user ID un identifiant Ex guillaume_p Un exemple de fichier ini un commentaire de fichier ini display type html source docbook Le fichier ini est limit Il n est pas possible d tendre la structure ni de mettre des valeurs sur plusieurs lignes ou des cl s comportant plusieurs mots ou des caract res sp ciaux utiliser donc lorsque l
418. n d un environ nement minimal est extr mement facile et rapide gr ce des programmes d installa tion packag s comme Wampserver ou EasyPHP Ces installeurs mettent en place en moins de dix minutes plusieurs outils s lectionn s pour leur popularit Ils sont tr s pratiques pour accompagner le d veloppement d applications simples En revanche ils ne permettent pas de simuler un v ritable environnement de production et ne sont pas suffisants pour assurer un travail d quipe efficace la lecture de ce chapitre vous serez non seulement capable de conna tre et com prendre les divers constituants d un environnement d ex cution professionnel mais galement de choisir et d installer l ensemble des outils dont vous aurez besoin que ce soit sur un simple poste ou sur un r seau de plusieurs serveurs Organisation du projet conventions et outils PREMI RE PARTIE Qu est ce qu un environnement d ex cution Il est avant tout le support mat riel et logiciel de vos travaux L installation d un envi ronnement d ex cution adapt aux caract ristiques de vos applications est d termi nant pour assurer un maximum de stabilit de qualit de confort et de performances pour le d veloppement de vos applications Avant d entamer la mise en place de notre environnement il sera n cessaire de con na tre et ma triser les points suivants e le type d applications mettre en place e les outils et les exte
419. n et d animation F A Administrateur Ayant tous les droits sauf certaines op rations critiques Censeur B Propri taire Responsable g n ral F Validateur FM D veloppeur F R dacteur F Adh rent Mettre jour D velopper des fonctionnalit s pour l environnement L environnement d ex cution id al est enti rement automatis et enti rement ma tris Malheureusement ces deux principes ne font pas toujours la paire L automatisation apporte souvent une complexit de maintenance suppl mentaire en cas de probl me et la ma trise compl te d un environnement impose une certaine simplicit Une solution consiste mettre en uvre d s le d part un espace de travail sp cifique pour la gestion des t ches d administration avec un syst me de reporting efficace en cas de probl me La figure 4 10 propose une id e d architecture bas e sur le mod le MVC pour cet espace de travail Mettre en place l environnement d ex cution pour le d veloppement CHAPITRE 4 Figure 4 10 Proposition d architecture Mod le Contr leur pour la gestion de la Ron Contr leurs maintenance syst me ne LDAP lt gt Gaona frontaux Sauvegarde incr mentale E a FTP_Logs Dao UnitTests Ge i i Contr leur Dao Deployer crontab Contr leur intranet Intranet Tab Vue lt CCSN Syst me Mailer Comme mentionn sur la figure 4 10 il est tout fait possible de choisi
420. n telle qu elle se pr sente cet instant m me si de nouveaux d veloppements ont eu lieu par dessus 4 C est l objet de l tape 4 Un clich de l application est pris cet instant Le nom RELEASE_1_0_0 est l identifiant du clich il permettra de l extraire du d p t de donn es tout moment La suite des d veloppements peut alors avoir lieu 5 Toute modification ult rieure suppression ou ajout effectu sur l application n affectera en aucun cas le clich RELEASE_1_0_0 qui pourra tre export de la base checkout tout moment RETENR Supprimer un fichier ne le supprime pas Vous vous demandez peut tre pourquoi sur la figure 2 16 la version du fichier 3 qui est cens e tre supprim e est lev e V1 2 La raison est simple les outils de gestion de versions courants comme CVS et Subversion ne suppriment rien ils conservent absolument tout ce qui se fait Le fichier 3 subit une suppression qui est en r alit une modification sp ciale qui consiste vider le fichier de son contenu Sa version est alors incr ment e mais comme il s agit d un fichier vide il sera ignor et consid r comme supprim Il est possible de ressusciter ce fichier en enregistrant un fichier du m me nom au m me endroit il sera alors incr ment en version V1 3 Davantage d informations vous attendent au chapitre 3 de cet ouvrage Organisation du projet conventions et outils PREMI RE PARTI
421. n un temps record D claration de l objet DOM racine doc new DOMDocument Chargement du flux XML doc gt 1oadXML xml D claration d un objet XPATH xpath new DOMXPath doc Evaluation de la requ te XPATH query count book chapter p nb_paragraphs xpath gt evaluate query Affichage du r sultat echo Il y a nb_paragraphs paragraphes dans le livre Tableau 11 5 Avantages et limites de DOM Avantages Limites Permet la lecture la modification et la suppression N cessit de charger le document en entier avant de contenu dans le document XML Outil efficace utilisation La prise en main de DOM n est pas poss dant de multiples possibilit s de navigation aussi ais e que celle de SimpleXML compatible XPATH et SimpleXML XSLT est un processeur utilis pour cr er toutes sortes de documents format s partir d un document XML contenant des donn es et d une feuille de styles XSL Cette derni re est galement un document XML sp cial Elle est constitu e d un pseudo langage compatible XPATH qui permet d associer aux balises d un docu ment XML des actions et des boucles 262 Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE L extension XSLT du moment PHP 5 et est bas e sur le moteur DOM Elle est stable et efficace Il existe cependant une autre extension permettant de g rer des trans formations XSLT appel e sablotron
422. nclude php_productmanagement h static function_ entry productmanagement_functions PHP_FE pm_get_version NULL NULL NULL NULL zend_module_entry openstates_module_entry if ZEND_MODULE_APT_NO gt 20010901 STANDARD_MODULE_HEADER endif PHP_PRODUCTMANAGEMENT _EXTNAME productmanagement_functions NULL NULL NULL NULL NULL Assurer des d veloppements PHP performants et polyvalents ET CHAPITRE 14 if ZEND_MODULE_API_NO gt 20010901 PHP_PRODUCTMANAGEMENT_ VERSION endif STANDARD_MODULE_PROPERTIES ifdef COMPILE_DL_PRODUCTMANAGEMENT ZEND_GET_MODULE productmanagement endif Renvoie la version de l extension PHP_FUNCTION pm_get_version RETURN_STRING PHP_PRODUCTMANAGEMENT_VERSION 1 Une fois ces trois fichiers cr s il ne nous reste plus qu g n rer l environnement de compilation et compiler pour la premi re fois l extension Premi re compilation de l extension phpize configure enable productmanagement make Pour tester la fonction pm_get_version que nous venons de cr er il faut que l envi ronnement PHP puisse charger dynamiquement notre extension Pour cela nous allons d placer le fichier modules productmanagement so qui vient d tre cr dans le dossier contenant les extensions PHP d fini par la cl extension dir de php ini et ajouter php ini la ligne extension productmanagement so il est possible galement de sp cifier
423. ne simple commande permet de t l charger et d installer la derni re version pr com pil e et pr install e d un programme Exemples d installation de PHP par les paquetages dans diff rents environnements T l charger et installer PHP avec une Debian apt get install php Mettre en place l environnement d ex cution pour le d veloppement EUX CHAPITRE 4 T l charger et installer PHP avec une Mandriva avoir configur l utilitaire avant utilisation est n cessaire vous pouvez faire cela gr ce un outil trouver via google easyurpmi urpmi php Installer PHP sous FreeBSD pkg_add php tgz T l charger et compiler automatiquement PHP sous FreeBSD avec les ports cd usr ports lang php5 make install clean A A H Il existe de nombreux paquetages pour installer de nouvelles extensions cd usr ports ftp php5 curl make install clean A A H H Int grer l environnement l intranet de l entreprise L intranet est la principale interface du syst me d information de l entreprise Si vous avez choisi d avoir un intranet en PHP il sera la vitrine id ale des outils et des proc dures li es l environnement de d veloppement L id e est de rendre simple et acces sible l utilisation courante de l environnement Une multitude d applications de gestion sont disponibles sur Internet et peuvent tre li es entre elles moyennant quelques int grations pour constituer
424. nement de production Comme le montre la figure 15 1 au d but de ce chapitre parmi l ensemble de ces diff rences nous pou vons citer e L emplacement de l application sur le serveur Cela ne devrait pas avoir d inci dence sauf si vous d clarez cet emplacement quelque part et si votre application PHP est d pendante de cette directive de configuration e L acc s l application URL n est pas le m me en d veloppement et en produc tion Cela peut tre galement un param tre modifier L environnement d ex cution ET CHAPITRE 15 e Certaines caract ristiques telles qu un syst me de r partition de charge un proxy qui ne sont pas pr sents sur l environnement de d veloppement peuvent avoir des incidences sur le comportement de l application RETENIR Pr voir une compatibilit multi environnement Cela peut se faire dans le code PHP avec une simple condition qui charge un fichier de configuration dif f rent en fonction de l environnement ou par l op ration de d ploiement qui doit alors pouvoir lire les param tres utiles URL etc dans votre descripteur de d ploiement Le syst me d exploitation La plate forme PHP m me si elle est portable est d pendante du syst me d exploi tation De l un l autre de Windows Linux par exemple il peut y avoir des diff rences e Un syst me Windows ignore par d faut la casse des fichiers ce qui n est pas le cas d un syst m
425. nements de recette d veloppement 18 Best Practices PHP Les concepts d environnement d ex cution et de serveur d applications sont nou veaux dans le monde PHP Les besoins des applications de grande taille voluent galement grand pas La mise en place d une architecture web avec serveur d applications et environne ment d ex cution n cessite les connaissances et le recul d un architecte et d un admi nistrateur Des soci t s comme Yahoo Boursorama Wanadoo et bien d autres sont les preuves vivantes que PHP est capable de s int grer une architecture web de pro duction cons quente Ce livre est en partie consacr la mise en place d un environnement propice l la boration d applicatifs PHP professionnels Richesse fonctionnelle et possibilit s de PHP Que peut faire PHP Les possibilit s de PHP en tant que plate forme volutive sont illimit es S il n existe pas une fonctionnalit dont on a besoin l heure actuelle elle peut exister plus tard Mais cela reste rare Le nombre et la diversit des extensions existantes couvre d j 98 des besoins des utilisateurs professionnels ou non Dans la plupart des cas PHP sert laborer des sites dynamiques De nombreux forums magasins en ligne sites de r servation et portails grand public sont r alis s en PHP Comme nous l avons vu pr c demment PHP peut galement servir d velopper des applications autonome
426. nes sp cifiques des modules que vous mutilisez pas ne vous seront pas utiles Utilisation de PHP avec un optimiseur L optimiseur n est pas toujours compatible avec certains d bogueurs Cependant en production cela nous est gal L utilisation d un optimiseur d opcodes tel que APC est b n fique pour les performances globales de votre plate forme PHP Le principe de fonctionnement et la liste des optimiseurs disponibles pour PHP a t d crite dans le chapitre 13 la section Mise en cache la compilation Installations et mises jour L installation et la mise jour des applications en production n est pas une t che que Pon peut aborder comme en environnement de d veloppement Les enjeux et les contraintes ne sont pas les m mes Dans un environnement multi applications avoir un administrateur syst me ayant une vision d ensemble tout moment de l tat de la plate forme de production est un bon moyen de maintenir une coh rence globale Proc dures d finies avec l administrateur syst me Les proc dures d installation et de mise jour des applications en production ont plusieurs objectifs e Garantir la qualit des versions stables destin es passer en production Cela se fait par l interm diaire d un environnement de recette pr production ou par un tout autre moyen qui garantit que des tests ont t pass s avec succ s pour une utilisation en environnement de production L
427. nition 258 352 exemple pratique 352 limites 352 principe 352 Win design 173 WinCacheGrind 312 WSDL Web Service Description Language 355 description 356 wysiwyg 262 X Xaraya framework 156 Xdebug 311 fonctions utiles 312 XMI Standard d change 200 XML applications 174 avantages et inconv nients 175 fichier de configuration 281 format de donn es choix 173 protocoles et applications 175 SOAP 175 transformer depuis tableau 283 40 Best Practices PHP vers objet 280 vers tableau 278 WDDX 175 XML RPC 175 XSLT 175 262 XML documents 255 257 balises 255 commentaires 257 espaces de noms 257 outils 257 utilisation 255 validit 257 XML REC 275 359 d finition 258 XP voir eXtreme Programming XPATH 261 XSL eXtensible Stylesheet Language 261 XSLT XSL Transformation 261 274 avantages et limites 263 d finition 258 exemple pratique 262 navigateur 263 principe 262 stylesheet 263 Y Yellow Duck framework 156 Z Zeev Suraski 440 Zend Platform 426 application gestion 435 avantages et inconv nients 428 avenir 435 clustering 432 EJB faire appel exemple 431 fonctionnalit s 426 installation param trage 433 Java interaction 430 performance 428 pont Java 430 public 427 qualit 428 r partition de charge 432 Zend Studio interaction avec 429 Zend Studio Zend Platform interaction avec 429 Zend Technologies 426 440 par Zeev Suraski 442 zend zel_compatibility_mode 389 ZNF
428. nnement courant Figure 17 1 ooo o g Utilisateurs lt pepan La Zend Platform de charge Y Y Y et son environnement ee ES C Admini Interface Applications Applications Applications strateurs de gestion A PHP PHP g PHP i EY k K N D veloppeurs SA Rapports de gt En k 2 x ZendStudio _ bogues y s Q D G 3 Te EN Q 2 Zend RES T 7 rue Fe Services z Platform BridgeJAVA D bogueur PHP Zend Engine Applications Optimiseur Geha Saa Serveur HTTP Apache Syst me d exploitation UNIX qui s adresse la Zend Platform Un outil vraiment rentable et que l on peut se payer m rite d tre adopt La Zend Platform est malheureusement commerciale contrairement PHP En revanche elle est incomparablement moins ch re que la plupart des solutions du m me type li es aux technologies les plus populaires de l industrie Java NET etc Elle ne sera donc pas forc ment adapt e de petits d veloppements mais permettra de faire de grosses conomies sur les co ts de d veloppement et de maintenance d applications cons quentes Une histoire d conomies Mis part le pont Java que nous aborderons ult rieurement la Zend Platform n apporte pas de fonctionnalit s cruciales Son r le est essentiellement de faire des conomies e De temps sur l installation de l environnement et son utilisation simple et centra lis e e De comp ten
429. ns L environnement d ex cution EX CHAPITRE 15 Les bonnes pratiques li es la configuration du serveur HTTP veulent que l on res pecte la logique de cette installation Discutez les conventions fixer sur la configu ration HTTP avec l administrateur syst me Si vous d cidez que vos applications doivent tre ind pendantes les unes des autres un VirtualHost par unit votre administrateur mettra en place un m canisme bas sur ce principe pour que l installation et la mise jour de vos d veloppements soient optimales Si vous d cidez en cours de route et sans prendre le temps de faire voluer la poli tique de votre configuration que telle application utilisera les images de telle autre et qu au fur et mesure des r gles de r critures et des liens symboliques fleurissent vous rendrez votre environnement vuln rable Prenez donc le temps de r fl chir consciencieusement avec votre administrateur sys t me ou la personne charg e de l exploitation sur la configuration du serveur Vous pouvez notamment aborder les sujets suivants e La gestion des applications leurs installation configuration possibilit s de mises jour Voyez galement comment vous mutualiserez vos applications PHP avec d autres applications non PHP e Les relations entre les applications les r pertoires communs conventions com munes vous pouvez d cider d avoir une r gle globale comme placer les images dans le dossier i
430. ns Il est par exemple possible de cr er des fichiers PDF Portable Document Format de se connecter des bases de donn es ou des serveurs d annuaires LDAP Lightweight Directory Access Protocol de cr er des clients et serveurs SOAP Simple Object Access Protocol ou d tablir des communications natives avec d autres applications d velopp es en Java ou en C C Les possibilit s de PHP ne s arr tent pas la cr ation de sites web PHP permet ga lement le d veloppement d applications en ligne de commande et un de ses modules lui permet de fournir des interfaces graphiques classiques client lourd sans naviga teur ou serveur web via GTK Gimp ToolKit PHP dispose de pr s de 3 000 fonctions utilisables dans des applications tr s vari es et couvre pratiquement tous les domaines en rapport avec les applications web Par exemple presque tous les SGBD Syst mes de gestion de bases de donn es du march peuvent s interfacer avec PHP qu ils soient commerciaux ou qu ils provien nent du monde du logiciel libre PHP est il adapt vos besoins BE CHAPITRE 1 De nombreuses solutions d interop rabilit existent aussi notamment autour de ser vices web SOAP etc CULTURE En savoir plus sur les possibilit s de PHP La documentation officielle propose une introduction qui explique ce qu est PHP et ce que l on peut faire avec cette plate forme Vous pouvez lire ces pages si vous souhaitez des informati
431. ns et ou des r gles pr d finies Vous pouvez par exemple exploiter le motif proxy pour donner un acc s une base de donn es en simulant la classe d acc s originale Votre classe Proxy fera donc appel cette classe originale moyennant les r gles que vous aurez d finies Figure 10 13 UML Principe Le motif proxy Proxy TargetClass Request Acc s la DB via la classe DBProxy rov DBProxy realTargetClass Request i D DB RealTargetClass Request a Le motif proxy peut galement donner une repr sentation simplifi e dun objet com plexe et jouer un r le de tampon devant un objet qui tarde se charger Dans notre repr sentation UML de la figure 10 13 notre Proxy simule l acc s un objet TargetClass Pour cela il g re lui m me un objet RealTargetClass RETENR Cache et m moire partag e avec le motif proxy Un Proxy Cache peut par exemple retenir le r sultat des requ tes utilisateur afin d viter d avoir r instancier un objet RealTargetClass figure 10 13 Ainsi lorsque le r sultat d une requ te utili sateur est d j en cache la r ponse devient imm diate Il est possible aussi pour un proxy de faire appel des objets RealTargetClass persistants et parta g s voir m moire partag e au chapitre 12 Ainsi nous conomisons les tapes redondantes d instan ciation chaque nouvelle requ te utilisateur Id e de mise en pratique P
432. nsible IMPORTANT prs tlm cr ct la fct q plt lol 6 Faites pr c der tous vos fichiers d un en t te de 250 lignes Veuillez prendre connaissance du contrat de licence de 250 lignes que voici etc voil voil bon scroll tous EC Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE 7 Accumulez les commentaires inutiles TODO d bogage etc chargement du fichier de configuration XML conf simplexml_load_file conf xml conf parse_ini_file conf ini true 8 crivez du code incompr hensible et commentez ce qu il est cens faire Calcul du budget final TODO corriger l erreur bdg C x amp 0485 tr tA Sa gt r gt gt y z e 9 Rangez vos commentaires n importe o function trucchose parse le fichier de conf a fichier optionnel 10 Ignorez et brouillez la phpdoc since rien final non non pas final return Cette fonction parse le fichier de confi guration 10 astuces pour am liorer vos commentaires Pour les rabat joie qui souhaitent au contraire commenter leur code pour rendre leurs d veloppements PHP lisibles voici quelques bonnes pratiques appliquer 1 Limitez vous l essentiel Un bon commentaire informe vite et bien Commentez ce qui doit l tre en employant des phrases et des mots simples sans fioriture 2 Soignez et a rez la pr sentation Espacez vos
433. nsions n cessaires au fonctionnement des applications e la configuration du parc informatique qui va supporter les serveurs et postes de d veloppement D finition d un environnement d ex cution pour PHP Nous d crirons ici dans un premier temps des configurations d environnements d ex cution PHP les plus courantes dans le cadre de d veloppements web Nous aborderons ensuite les divers constituants d un environnement les bonnes pratiques de param trage des composants critiques et l ensemble des points auxquels il faut penser pour monter un environnement simple performant pratique et confortable L environnement minimal L environnement d ex cution minimal d une application PHP est d crit sur la figure 4 1 Il est compos des l ments suivants un syst me d exploitation install sur un ordinateur e un interpr teur de code PHP e un serveur de pages web serveur HTTP es EN Un environnement d ex cution minimal pour PHP Serveur Interpr teur HTTP PHP Syst me d exploitation Mettre en place l environnement d ex cution pour le d veloppement CHAPITRE 4 Ces composants eux seuls permettent d h berger et de faire tourner une application PHP Ajoutez y un diteur de texte et vous avez d j un environnement de d velop pement suffisant En revanche la plupart des applications ne se contentent pas de ces seuls outils Un environnement minimal reste tr s limit
434. nt un probl me tout ce qui a t fait apr s la derni re sauvegarde risque d tre perdu jamais cela vous avez plusieurs solutions e Mettre vos donn es changeantes sur un serveur s par base de donn es e Mettre en place un syst me de synchronisation temps r el c est dire qu chaque fois qu une action est effectu e sur un serveur elle est effectu e aussi sur l autre Certains SGBD permettent ce genre de r plication e Mettre en place un mode maintenance lorsque le proxy pointe vers le serveur de sauvegarde de mani re ce que rien ne puisse tre modifi pendant la r para tion du serveur de production Quoi qu il en soit si vous pouvez faire des tests sur vos syst mes n h sitez pas Vous aurez ainsi confiance lorsque vous serez contraint d agir Archivage des sauvegardes Sur le serveur de sauvegarde ou sur un serveur part vous pouvez mettre en place un syst me d archivage que vous garderez sur un support externe CD Rom bande magn tique Si vous n effectuez pas cette op ration et si les donn es corrompues du serveur de production sont r pliqu es sur le serveur de sauvegarde vous aurez perdu l int r t de la sauvegarde D finition des exigences pour l exploitation Figure 16 4 Une politique de sauvegarde d une application et de ses QUATRI ME PARTIE Actionnement automatique Actionnement manuel I 1 Serveur de sauvegarde
435. nt Il existe une solution facile pour viter ce probl me communiquer avec votre administrateur syst me Nous allons voir dans les sections qui suivent les informations que vous devez con na tre avant d aborder celles que vous devez transmettre Certaines parties s adresse ront galement l administrateur syst me Ma triser les caract ristiques de l environnement Cela consiste conna tre les diff rents constituants de l environnement d ex cution ainsi que leurs configurations et caract ristiques La figure 15 1 illustre la plupart des points conna tre sur l environnement pour d velopper dans des conditions opti males Figure 15 1 n Ste Environnement PHP HTTP Environnement applicatif Conna tre les caract ristiques de l environnement de Configuration ne Proc dures production Serveur N Appli Version Installation y Packaging HTTP E Mise jour y Modules install s L Automatismes Type de relation Emplacement de l application L 1 Configuration plateforme A 7 Exploitation PHP 9 Version j Url type d acc s 44 R partition de Modules install s charge clusters Environnement du ou des serveur s Type O S Configuration version Set des applications et des es yst me ricti d mons disponibles Environnement d exploitation q_ Caract ristiques applicatif Version S curit firewall etc Environnem
436. nt le serveur sous forme de service et met disposition une interface de configuration intuitive Ce paquetage introduit galement de nouvelles fonctionnalit s et am liorations Pour en savoir plus vous pouvez consulter son site l adresse suivante gt http www cusnt com Cr ation d un d p t de donn es Cr er un d p t de donn es est une op ration simple et rapide Choisissez dans un premier temps une partition de taille cons quente pour h berger vos sources nous l appellerons space cvs_repository Une partition RAID est conseill e si vos d veloppements sont importants Ensuite l installation du d p t se fait en une seule ligne Installation d un d p t de donn es CVS mkdir space cvs_repository cvs d space cvs_repository init Cette op ration doit cr er un r pertoire space cvs_repository CVSROOT contenant les m tafichiers du d p t de donn es Configuration du d p t pour PHP Dans le r pertoire space cvs_repository CVSROOT nous allons nous int resser aux P quelques fichiers suivants e cvswrappers configuration des types de fichiers en fonction de leurs extensions e cvsignore configuration des motifs de fichiers ne pas importer dans le d p t de donn es e passwd liste des acc s par la m thode pserver que nous aborderons plus loin e etc inetd conf configuration de l acc s pserver sur le r seau local via le d mon inetd ou xinetd sur certains
437. ntime sybase On Off Les magic quotes ou guillemets magiques sont un m canisme de traitement auto matique de l chappement de certains caract res Il est recommand de ne pas les utiliser En revanche magic_quotes_gpc tant On par d faut le laisser tel quel rendent vos d veloppements compatibles avec la plupart des configurations de PHP Une page de documentation est consacr e aux magic quotes sur le site officiel de PHP magic quotes http www php net manual fr security magicquotes php include_path lt liste de chemins gt Cette directive d termine dans quels r pertoires PHP ira chercher les fichiers appel s avec certaines fonctions comme include ou require Par d faut il se r f re au r pertoire courant mais accepte les chemins absolus D finition des exigences pour l exploitation QUATRI ME PARTIE Si vous remplissez cette directive vous en rendez votre application fortement d pen dante Vous pouvez vous baser sur le dossier du fichier PHP courant pour g rer vos include comme solution alternative Inclusion du fichier mysql php dans un dossier lib situ un cran plus bas que le dossier du pr sent fichier include dirname __FILE__ 1ib mysql php Et les autres directives Pour installer votre plate forme PHP sur mesure il est conseill de passer en revue l ensemble des directives du fichier de configuration Certai
438. nts PDF documents PDF Donn es objets SA Pour g n raliser tout traitement identifiable destin tre r utilis ou voluer peut tre englob dans un objet Les fonctionnalit s similaires Voici un autre domaine d application de la programmation orient e objet la mise en place de plusieurs fonctionnalit s sp cifiques similaires qui peuvent se partager des traitements communs Par exemple la cr ation de documents PDF et HTML partir de documents XML peut faire l objet de deux classes sp cifiques de g n ration PDF et HTML h ritant d une classe contenant des traitements communs Ce m canisme est illustr sur la figure 11 14 Sp cifique ON D Sp cira G n ration de documents traitements XML G n rique d coupage paragraphes Vi LAN IE D G n ration PDF N G n ration PDF 3 G n ration HTML traitements XML traitements XML traitements XML d coupage paragraphes d coupage paragraphes d coupage paragraphes traduction PDF traduction PDF traduction HTML It ration 1 It ration 2 Figure 11 14 Une volution agile d objets dans un processus de d veloppement it ratif Si vous d veloppez avec des m thodes agiles vous pouvez avec les objets partir du sp cifique pour construire au fur et mesure le g n rique 268 Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Sur la figure 11 14 nous pouvons voir que la classe g n rique de product
439. nual phpdoc org Un commentaire d en t te standard doit tre reproduit dans chaque fichier http pear php net manual fr standards header php L utilisation des tags lt php et gt est obli gatoire Voici un ensemble de conventions largement utilis es Vous pouvez choisir lune ou l autre ou d finir vos propres r gles d criture Sachez que quel que soit votre choix le plus important est de s y tenir La forme de votre code source doit tre homog ne en tout point de votre projet ce qui implique galement que l ensemble de vos colla borateurs pr sents ou futurs doivent conna tre et adopter ces conventions D finir des conventions pour la conception d applications PHP Re CHAPITRE 2 BONNES HABITUDES Allez au del des r gles de formatage Par exemple lorsqu une ligne de code poss de beaucoup de comparaisons il est d usage de la repr sen ter sur plusieurs lignes et de jouer sur l alignement et les parenth ses pour en faciliter la lisibilit et les priorit s des traitements if CCC this gt nbProducts 0 Ccount this gt operations 0 C userManagement gt isAdmin amp amp isset request traitements Lorsque vous devez crire une requ te SQL longue vous pouvez appliquer le m me principe pour favori ser la lisibilit SELECT users userID AS id FROM users roles groups WHERE users id roles user_id AND groups id roles group_id AND C roles module sql_manag
440. o S J N ri ge A Qu LibXML N brige P WDDX us y 35 z uysa CLibXML D gdib Choisir les ressources et les supports de donn es RER CHAPITRE 7 Quand et pourquoi d velopper une extension en langage C Le d veloppement d une extension pour PHP requiert quelques connaissances en programmation C C Il existe aujourd hui assez de fonctionnalit s disponibles travers PHP et ses extensions pour balayer les besoins de la majeure partie des projets En revanche il peut y avoir deux bonnes raisons de choisir l alternative extension 1 Pour mettre en place un acc s natif un programme qui n est pas g r par les extensions existantes Cela peut tre un programme propri taire ou pas assez populaire pour faire l objet d une extension 2 Pour accro tre les performances de votre application vous choisissez de d velop per une partie de vos algorithmes en C Dans ce cas il vous faut une solution d interop rabilit C PHP tr s efficace Rien de mieux alors qu une extension C RESSOURCES Consultez la biblioth que PECL Les extensions C existantes pour PHP sont disponibles dans la biblioth que PECL l adresse ci dessous N h sitez pas y jeter un coup d il afin d avoir un aper u de tout ce qui existe D autre part si vous cherchez une documentation pour d velopper votre extension vous pouvez commencer par lire le chapi tre 14 et la section talks du site officiel de PHP gt http pe
441. o en PHP vous validez un gros fichier mpeg gr ce la commande commit de votre gestionnaire de version CVS Mal heureusement il se trouve que ce fichier n est pas la bonne place Vous faites alors appel la commande delete pour le supprimer puis vous ajoutez le fichier au bon emplacement gr ce aux commandes add puis commit Suite ces op rations vous pouvez effectuer un checkout extraction de votre appli cation et vous vous apercevez avec joie que le gros fichier a bien t d plac Seule ment s il n appara t qu une seule fois dans votre extraction il est rest disponible en deux exemplaires dans le d p t de donn es car rappelons nous la r gle d or un d p t de donn es ne supprime rien Mais pourquoi un d p t ne supprime rien Tout simplement parce qu un gestionnaire de versions doit permettre un retour en arri re sur les sources d une application n importe quel moment choisi dans le pass Avant la date de suppression le fichier existait donc il doit tre maintenu Si un utilisateur d cide d effectuer une extraction sur une p riode pendant laquelle le fichier existait il sera extrait Organisation du projet conventions et outils PREMI RE PARTIE REENR Les op rations de d placement et modification de noms de fichiers diff rent d un outil l autre Il est important de conna tre les m canismes de votre outil afin de vous y adapter Par exemple avec CVS un d
442. ode complets Il existe des g n rateurs de squelettes ou de classes remplir par des d veloppeurs ce n est pas le sujet de cette section Pr cisons tout de suite qu il existe plusieurs types de g n ration de code e Une application de conception logicielle ou un moteur de templates peut g n rer le code d un ou plusieurs fichier s ou l impl mentation compl te d une applica tion On appelle souvent ces outils des compilateurs car leur r le est de traduire un langage souvent de quatri me g n ration en PHP Surtout connu dans le monde de l intelligence artificielle il est possible et m me facile en PHP de mettre en place un m canisme d autog n ration en d autres termes cr er une application qui est capable de modifier son propre code la vol e C est une discipline passionnante mais pleine de pi ges Enfin certains outils sont capables de parcourir parser du code et de le r crire de mani re ce qu il soit plus lisible formatters moins lisible encoders plus per formant optimizers plus ou moins s curis ou sp cifique une utilisation don n e Ici nous avons affaire un m canisme de traduction ou de remaniement automatique de code Que peut faire la g n ration de code L imagination permet de tout envisager Nous pouvons en revanche citer quelques applications plus ou moins mises en uvre e Le compilateur de templates prend en entr e un gabarit compos d un
443. ode fonctionne sur votre serveur personnel cela ne garantit pas qu il supportera la charge sur un serveur de production Passons quel ques bonnes pratiques de m nagement de la m moire include require Il existe une solution simple pour sabstraire de l utilisation fastidieuse des d pendances utiliser include_once require_once le plus souvent possible cr ant ainsi une grande cha ne Cependant nous l avons vu pr c demment PHP est inter pr t et la phase d interpr tation sans optimiseur d opcodes n conomise pas les res sources vitez d accumuler trop de include require Ils sont trait s ind pendamment et provoquent chaque fois une interpr tation des fichiers Les d veloppeurs de PHP recommandent de ne pas d passer 5 ou 6 niveaux d include e Regroupez vos fonctions par utilisation de mani re r duire les inclusions et privil gier la s paration du code Inclure peu de petits fichiers est mieux qu inclure beaucoup de petits fichiers ou peu de gros fichiers Assurer la qualit d un d veloppement PHP EX CHAPITRE 12 RETENIR Quelle est la diff rence entre include require include_once require_once En ce qui concerne les performances l utilisation de l un ou de l autre ne change pas grand chose La seule diff rence entre include et require est au niveau de la gestion des erreurs L utilisation de require engendrera une erreur fatale bloquante tandis que include provoquera s
444. ode pr c dent remplacez http lt ur1 gt httpd 2 lt version gt tar gz par PURL des sources que vous avez copi es depuis le site d Apache Nous venons d installer les sources de notre serveur HTTP nous pouvons passer au choix des options Pour obtenir cette liste vous pouvez utiliser la commande suivante Afficher la liste des options de compilation disponibles configure help less E M THODE Dois je installer tous mes modules Apache par l interm diaire de configure Non Les modules qui sont install s avec configure font l objet d une installation statique Ils sont compil s et int gr s dans l ex cutable d Apache qui se trouve par cons quent alourdi L option enable so est en revanche int ressante car vous pourrez par la suite lier dynamiquement de nou veaux modules Apache Nous verrons comment faire cela avec PHP dans la section suivante Assurez vous que les modules que vous s lectionnez en argument de l ex cutable configure fassent l objet d une utilisation intensive de votre part Cette int gration statique dans Apache accroit les perfor mances du module mais d grade les performances globales Une fois que vous avez choisi vos options vous pouvez passer la pr paration de votre compilation Pour cela vous pouvez prendre l habitude de cr er un petit script r utilisable my_configure qui maintient ces options entre deux compilations D finition des exigences
445. oient syst matiquement r solus Cet outil permet e la mise disposition partag e du code source des applications en cours de d ve loppement e la m morisation de l ensemble des op rations d ajout modification et suppres sion et marquage effectu es sur le d p t de donn es e la possibilit d annuler des actions et de revenir sur des versions pr c dentes pour chaque fichier e la possibilit de figer une version sur l ensemble des fichiers afin de pouvoir extraire une version pr cise d une application Principe de fonctionnement La figure 3 1 pr sente quelques op rations courantes propos es par un gestionnaire de versions avec quelques explications succinctes Il nous faudrait plus d un chapitre pour exp rimenter l ensemble des possibilit s d un tel outil aussi nous nous conten terons ici d une rapide pr sentation Exemple de sc nario Imaginons que nous voulons cr er un projet avec un gestionnaire de versions Nous allons voir tape par tape les op rations mettre en uvre 1 Dans un tout premier temps apr s installation d un outil de versionning tel que CVS nous allons cr er un d p t de donn es gr ce l op ration init Ce d p t peut contenir plusieurs modules nous allons en cr er un avec l op ration import qui d placera les premiers fichiers de notre application dans le d p t Installer et utiliser un gestionnaire de versions CHAPITRE 3 Figure 3 1 z
446. ojet l expertise pour ensuite devenir responsable d une cellule d di e l open source Concernant mes hobbies disons que je suis un passionn du clavier Lorsque je ne suis pas devant un ordinateur je suis devant un piano Quel a t votre parcours avec PHP Ma premi re exp rience web fut en compagnie d ASP de Microsoft Jai migr vers PHP titre de comparaison Au d part je lui ai simplement pr f r sa syntaxe pour m apercevoir avec le temps que PHP tait nettement en avance en terme de possibi lit s Depuis Microsoft a lanc Net qui comble le gouffre Mes exp riences avec PHP sont presque exclusivement professionnelles ce qui oriente mes pr occupations vers l entreprise Pouvez vous nous d crire le projet de framework Copix dont vous tes l auteur Copix est un framework de d veloppement d di aux applications web Il est n pour permettre plusieurs personnes de travailler simultan ment sur un ou plusieurs projet s sans qu elles aient se soucier des probl matiques techniques classiques Copix propose une plate forme qui aide les d veloppeurs cr er des modules fonc tionnels et interop rables autour de briques indispensables gestion des droits rubri quage internationalisation gestion des donn es etc T moignages CINQUI ME PARTIE Lorsque vous d veloppez un module sous Copix vous savez que vous pouvez profiter de tous les modules qui ont
447. ompagner vos r flexions sur les diagrammes de classes L identification des objets m tier Commen ons par revoir nos cas d utilisation pour distinguer les objets m tier qui apparaissent Dans le cas de notre projet UNANYM la remarque ci apr s donne une liste d objets m tier correspondants EXEMPLE PRATIQUE Quelques objets m tier utiles pour UNANYM En reprenant les cas d utilisation et l expression des besoins les exigences et les con traintes vues pr c demment nous pouvons en d duire quelques objets m tier e Administrator Developper que nous pouvons faire h riter d une classe Person e Editor repr sentant un diteur Zend Studio Eclipse etc e MonitorAgent repr sentant un agent de monitoring moniteur m moire moni teur disque etc e Command repr sentant une commande ligne de commande e ConfigFile repr sentant un fichier de configuration syst me hosts resolv conf php ini etc e Application repr sentant une application en PHP e Incident repr sentant un incident g n r par un agent de monitoring Une fois les objets m tier identifi s nous pouvons commencer les mettre en rela tion puis les remplir et faire appara tre peu peu notre architecture C est le r le du diagramme de classes Le diagramme de classes Le diagramme de classes que nous allons voir dans un premier temps se construit avec les classes de type enrit Il met en avant leurs relati
448. omportement de l it rateur interne d un objet comme le montre l exemple ci apr s Red finition de la politique d it ration d un objet Cette classe impl mente l objet It rateur interne de PHP 5 class PageTitles implements Iterator private titles array public function __construct html_page preg_match_all lt h1 gt 2 lt h1 gt x file _get_contents html_page this gt titles PREG_SET_ ORDER public function rewind reset this gt titles public function current var current this gt titles return var 1 var 1 false public function key var key this gt titles return var Les motifs de conception Design Patterns public function next var next this gt titles return var public function valid var this gt currentO false return var It ration sur les titres d une page web php new PageTitles http www php net foreach php as key gt title print key title n R sultat du script pr c dent php Iterator php 0 e J OO 1 amp NN HA DNNRRHRHRHR HR HR N H OO U1 BB amp w NN Hi International PHP Conference 2005 Program available weblworks and phplworks 2005 Program Online PHP 5 1 Beta 3 Available PHP 4 4 0 Released PEAR XML_RPC Vulnerability and PHP 4 4 0RC2 release PHP 5 1 Beta 2 Available Zend PHP Conference 2
449. on accessible travers PHP e XML devient un standard de stockage pour de plus en plus d applications Il devient alors possible de manipuler ces donn es travers un outil ad quat savor Acc s un document OpenOffice via XML L application de bureautique OpenOffice utilise le format XML dans ses documents Il devient alors possi ble facile et efficace de cr er et modifier des documents OpenOffice avec PHP par le biais de XML Ce livre par exemple fait l objet d une g n ration automatique aux formats HTML et en PDF gr ce cette caract ristique d OpenOffice Chapitre 7 Choisir les ressources et les supports de donn es 30 Mozilla Firefox Eile Edit View Go Bookmarks Tools Help amp 7 D e x A E http localhost book chapitre_7 htm Go er XML poss de de nombreux outils de lecture et d criture rapides ct fiables tels que SAX DOM ou SimpleXML ce qui rend sa manipulation accessible travers PHP XML devient un standard de stockage pour de plus en plus d applications Il devient alors possible de manipuler ces donn es travers un outil de manipulation de XMI Acc s un document OpenOffice via XML L application de bureautique OpenOffice utilise le format XML dans ses documents I devient alors possible fadle et efficace de cr er el modifier des documents OpenOffice avec PHP par le biais de XML Ce livre par exemple fait l objet d une g n ration automatique en HTML et en PDF gr
450. on de PHP sont les suivantes les mots entre lt et gt sont remplacer par les donn es correspondantes tapes minimales de compilation de PHP wget lt url_des_sources_php gt tar xzf php lt version gt tar gz cd php lt version gt configure prefix usr local with apxs make install Mettre en place l environnement d ex cution pour le d veloppement a CHAPITRE 4 Ces quelques commandes effectuent les op rations suivantes 1 t l chargement des sources de PHP 2 d compactage des sources 3 lancement du configure avec les param tres de pr compilation 4 compilation et installation L option prefix de lex cutable configure d termine le r pertoire de base de Pins tallation de PHP L option with apxs permet la g n ration d un module dyna mique de PHP fichier so d placer dans le r pertoire de stockage des modules dynamiques du serveur HTTP ce qui est g n ralement fait par d faut Astuce M moriser ses param tres de compilation Afin de se souvenir des param tres passer l ex cutable configure vous pouvez cr er un fichier my_configure organis comme ceci l bin sh Pr configuration avant installation Ex cutez ce fichier puis tapez make puis make install pour compiler et installer l application configure prefix usr local With apxs With mysql Les param tres de compilation du serveur HTTP En mode d veloppement
451. on de bases de donn es Vous pouvez rendre possible l utilisation de plusieurs SGBD diff rents gr ce une extension sp ciale qui permet de mettre en place une abstraction de base de donn es Etant donn la complexit d un tel projet ces extensions ne sont pas nombreuses DBX SGBD g r s FrontBase e SQL Server e MySQL ODBC e PostgreSQL Sybase CT e Oracle via OCIS SQLite DBX est une extension PHP d abstraction de bases de donn es Il n attaque pas directement les SGBD mais se sert des extensions sp cifiques de chacun d eux extension MySQL ODBC etc Cette extension comporte un nombre limit de fonctions et permet d effectuer des requ tes simples PDO SGBD g r s FreeTDS SQL Server Sybase Firebird Interbase 6 MySQL Oracle ODBC DB2 unixODBC PostgreSQL SQLite L extension PDO PHP Data Objects est une application d avenir pour PHP Elle d finit une interface pratique d acc s de multiples bases de donn es 168 Organisation du projet conventions et outils PREMI RE PARTIE L extension en elle m me n est li e aucune base elle n cessite la pr sence d exten sions sp cifiques aux bases auxquelles vous souhaitez acc der Documentation de l extension PDO gt http fr php net manual fr ref pdo php CR CR ER ER Acc s Natif Interrogation via MySQL PgSQL MSSQL TT PDO Figure 7 5 Principe de
452. on du framework est elle bonne popularit histoire communaut des d veloppeurs La philosophie du framework est elle adapt e vos habitudes de travail organi sation des structures modularit architecture globale etc Les performances annonc es vous conviennent elles comportement forte charge outils de mise en cache optimiseurs etc La documentation du framework est elle suffisante pour l exploiter simplement et efficacement La licence du framework est elle compatible avec l utilisation que vous voulez en faire REX Organisation du projet conventions et outils PREMI RE PARTIE Nom Carthag Castor CEP Cgiapp Copix Cortex ErisX FreeForm FastFrame codejanitor GGF Tableau 7 1 Quelques frameworks pour vos d veloppements PHP suite Description Ce framework exploite les nouveaut s de PHP5 et r pond aux besoins des projets professionnels Le con cept est bas sur plusieurs id es tir es du monde J2FE et impl mente des motifs de conception Observer Factory Singleton DAO etc Un framework intuitif pour cr er des applications web Il est bas sur une librairie de composants utiles diteur wysiwyg templating modularit profiling etc Une jolie pr sentation est disponible sur le site officiel Core Enterprise PHP tend PEAR Il est destin d ve lopper des applications modulaires pour l entreprise Un framework PHP 4 et PHP 5 destin
453. onctionnalit s utiles PHP navigateur de classes et de fonctions compl tion FTP int gr d bo gueur todo list etc Un bon diteur pour le d veloppeur polyvalent qui axe ses tra vaux autour de PHP Notons simplement que les fonctions de compl tion ont quelques probl mes de jeu nesse avec PHP 5 et que l diteur peut avoir des d fauts de stabilit de temps autre mais cela devrait s arranger dans les prochaines versions gt http www mpsoftware dk phpdesigner php Emacs Ce programme multi plates formes propose norm ment de fonctionnalit s qui d passent parfois la simple fonction d dition client mail news navigateur web etc Le module PHP pour Emacs mode_php e1 permet une int gration r ussie de PHP dans l diteur Mais PHP peut aussi b n ficier d autres fonctionnalit s tr s utiles g r es par Emacs les templates de code l indentation automatique l int gration du shell la gestion avanc e des commentaires rebox etc Vous d couvrirez au chapitre 12 comment mettre en place un lien dans les erreurs PHP pour ouvrir automatiquement Emacs et diter le fichier et la ligne incrimin e http sourceforge net projects php mode gt http www gnu org software emacs emacs html Dreamweaver Dreamweaver est un diteur HTML wysiwyg commercial largement utilis par les professionnels du design Il est tr s complet et pratique exploiter Dans ses der
454. onfigurations utiles pour le d bogage La figure 6 7 met en avant quelques exemples de configurations logicielles utiles pour le d bogage d applications PHP Nous aborderons au chapitre 12 l installation et l utilisation d taill e de ces outils Figure 6 7 Unix Linux a Unix Linux2 Windows Quelques configurations A simples pour le d bogage Xdebug 1 x A Xdebug 2 x d applications PHP KeacheGrind KeacheGrind WinCacheGrind ee Ne ns ae rem eran Monitoring du d veloppement Nous y venons lentement et s rement Les outils de monitoring du d veloppement sont courants pour des plates formes depuis longtemps tourn es vers les entreprises comme J2EE ou NET En PHP l utilit de ce genre d outils commence se faire sentir En revanche il n existe pas encore l heure actuelle d environnement packag permettant de maintenir la qualit et les performances des d veloppements Le rapport de qualit Les outils d analyse de style checkstyle et de qualit du d veloppement analyse de l architecture des applications du taux de redondance des algorithmes etc sont rares en PHP l heure o sont crites ces lignes Un rapide sondage parmi de nombreux professionnels a confirm que la qualit des d veloppements tait surtout assur e par la pr sence de tests unitaires la documentation et l exp rience des d veloppeurs Exemple
455. ong mettre en uvre mais poss de de nom breux avantages sur ses homologues classiques Il permet une interaction ais e avec le client ou l utilisateur final gr ce la notion d environnement de recette Il est con u pour accompagner un rythme de d veloppement it ratif c est dire d coup en petits d veloppements par tapes et en livraisons par paliers e Il poss de galement tous les avantages d un environnement de d veloppement en quipe L environnement agile exploite le trio d veloppement recette production qui est d crit un peu plus loin dans ce chapitre Nous ne le d taillerons donc pas dans cette section En revanche cet environnement est difficilement adaptable une toute petite quipe ou des petits projets car il n cessite davantage de maintenance Environnement de Environnement de Environnement de D veloppement Recette Production Figure 4 4 Un environnement d ex cution agile pour PHP Organisation du projet conventions et outils PREMI RE PARTIE Param tres utiles d un environnement d ex cution L installation d un environnement d ex cution implique le choix la mise en place et la configuration de ses constituants commencer par le syst me d exploitation Les syst mes g n ralement choisis pour l h bergement d applications PHP en pro duction sont des syst mes Unix et d riv s Linux amp BSD Nous nous baserons donc essentiellement s
456. ons attributs et m thodes Voyons dans un premier temps sur la figure 8 10 ce qui compose un diagramme de classes Sur le diagramme l gende repr sent par la figure 8 10 nous distinguons quelques symboles utiles qui nous serviront construire notre diagramme de classes Nous pouvons d tailler le r le de ces symboles par cat gories l ments de mod lisation utiles PHP RUE CHAPITRE 8 Figure 8 10 Composition d un 1 UnStereotype Une relation UneClasseAbstraite diagramme de classes MaClasse d h ritage AttributPrive AttributPrive gt HAttributProtege AttributProtege AttributPublic AttributPublic MethodePrivee inout attribut MethodeProtegee MethodePublique MethodePrivee inout attribut MethodeProtegee MethodePublique 1 Une agr gation Une 1 association UneAutreClasse Une composition EncoreUneClasse 3 interface Unelnterface Les entit s e Une interface ne peut tre instanci e Elle sert de mod le structurel d autres classes e Une classe abstraite de m me qu une interface ne peut tre instanci e En revan che elle peut contenir du code qui ne fait pas partie de la structure et sert de mod le d autres classes e Un st r otype est un indicateur qui range la classe dans une cat gorie sp cifique voir la section pr c dente e Les attributs et les m thode
457. ons d taill es sur les possibilit s de PHP gt http www php net manual fr introduction php qui s adresse PHP PHP n a aujourd hui rien envier aux plates formes Net et J2EE pour le d veloppe ment de solutions applicatives dynamiques pour le Web Il est d ailleurs possible de rendre compl mentaires PHP et l une de ces technologies En terme de productivit le principal avantage de PHP est sa simplicit sa rapidit et sa fiabilit que ce soit au niveau du d veloppement ou de l ex cution e Programmer avec PHP ne n cessite aucune compilation ou construction manuelle Les modifications effectu es sur le code sont imm diatement op ra tionnelles e Les outils de d bogage propos s avec PHP assurent une parfaite ma trise du comportement des d veloppements vis vis de la m moire et des ressources e PHP est plus qu interpr t il est compil la vol e ce qui signifie qu chaque modification effectu e sur le code une compilation partielle en langage machine opcodes est effectu e l chelle d un tre humain cette tape de compilation la vol e est instantan e PHP est galement souple et facile manipuler Ces caract ristiques sont id ales pour travailler dans le cadre d une m thode agile telle que l eXtreme Programming CULTURE M thode agile Une m thode agile est une nouvelle mani re d aborder les projets de d veloppements informatiques
458. onstituer une quipe qui gagne Observez dans un premier temps ces quipes On les distingue facilement car elles favorisent le d veloppement d uvres et de personnes exceptionnelles Goscinny Uderzo les quipes techniques Pixar le PHPGroup etc Observez la place qu occupe chaque membre la mani re dont ils collaborent leur complicit leurs relations dans la vie de tous les jours Observez ensuite les membres qui constitueront potentiellement votre quipe et t chez de d couvrir pour chacun d eux e Leurs sp cialit s elles sont le moteur de la dignit et de la prosp rit qui font peu peu leur fiert Elles sont galement les domaines dans lesquels l individu sera pr t s investir et se perfectionner e Leurs ambitions personnelles elle peuvent tre tr s diff rentes d un individu l autre mais pour chacun d eux il est important de progresser dans le bon sens au risque de frustrations et de d motivations e Leurs centres d int r t ils favorisent l quilibre et le bien tre de chacun Si les membres d une m me quipe ont la chance d avoir des centres d int r t communs cela peut tre un moteur pour le projet e Leurs femp raments il est int ressant de le conna tre car m me si tout s accorde jusqu ici il reste ce facteur qui d terminera non seulement la qualit des relations entre individus mais aussi leurs facult s pragmatisme aptitude raisonner etc R partition des
459. onventions et outils PREMI RE PARTIE B tir sa propre m thode Il n existe pas de m thode r volutionnaire adaptable nimporte quel d veloppement informatique Les besoins et les fonctionnalit s des projets se diversifiant imaginer sa propre m thode de d veloppement peut s av rer parfois b n fique Mais il faut bien tre conscient que pour assurer le succ s de votre projet moyen terme comme long terme il vous faudra travailler cette m thode pour qu elle ne soit pas au final un obstacle au bon d roulement de votre travail Les lois du succ s d une m thode nouvelle Le principal probl me d une m thode nouvelle est qu elle est nouvelle Elle n a pas encore fait ses preuves et n est pas largement document e comme les m thodes agiles ou les motifs de conception Les acteurs du projet devront la comprendre l accepter et se l approprier avec comme seule ressource documentaire ce que vous aurez fourni Quelques r gles l mentaires et n cessaires doivent tre respect es Une m thode nouvelle doit tre Simple et coh rente La simplicit facilitera compr hension et adaptation La coh rence des actions et des concepts vitera de se retrouver face des probl mes qui alourdiront certaines t ches au lieu de les all ger Document e Les paroles s envolent les crits restent L application des m thodes de d veloppement dans les r gles de lart est souvent b cl e par manque d
460. oppements PHP le para m trage de la base de donn es et l ensemble des travaux effectu s autour de l applica tion seraient rapidement difficiles mettre en commun C est pour cela qu il est utile voire indispensable de mettre en place un environne ment partag Cela n cessite un travail de configuration suppl mentaire qui sera lar gement compens par la suite Voici une liste d outils qu il peut tre utile de mettre en commun avec quelques explications Un serveur simulant les caract ristiques de l environnement de production permet de d tecter a priori les erreurs li es au syst me d exploitation car souvent celui d un poste de d veloppement Mac OS Windows n est pas le m me que celui d un serveur de production Unix Linux La configuration et la version du serveur HTTP peut voluer r guli rement sur tout s il h berge un grand nombre d applications La configuration et la version de PHP et de ses extensions sont galement impor tantes Elles d terminent le jeu de fonctions disponibles et leurs comportements Un environnement de test commun permet de d tecter les probl mes de conflits et viter de nombreuses r gressions Les tests unitaires assurent l int grit de fonctionnalit s l mentaires et les tests de recette garantissent le bon fonctionne ment de l application vu de l ext rieur La ou les bases de donn es MySQL LDAP etc ont une architecture et une configuration qu
461. orrections de bogues ou mises jour passag res nous incr menterons l indicatif le plus faible indicatif de maintenance Par exemple nous passerons de RELEASE_1_3_4 RELEASE_1_ 35 S il s agit d un ensemble de bogues et de mises jour importantes nous incr menterons l indicatif du milieu r vision Par exemple nous passerons de RELEASE_1_3_4 RELEASE_1_4_0 e S il s agit d une refonte compl te de l ensemble de l application nous incr mente rons l indicatif le plus fort version de l application Par exemple nous passerons de RELEASE_1_3_4 RELEASE_2_0_0 G n ralement cette op ration est accompa gn e de la cr ation d une branche viter les renommages et les d placements en masse Ce principe s applique surtout aux utilisateurs de CVS Nous avons vu pr c dem ment qu un d placement correspondait en r alit une suppression au sens CVS suivie de la cr ation d un nouveau fichier Il s en suit l import complet de ce nouveau fichier et la perte de l historique due au fait que CVS consid re qu il s agit d un nou veau fichier Le renommage d un fichier a exactement le m me effet qu un d placement Il mest pas possible de renommer un fichier dans CVS sans le supprimer dans un premier temps puis le recr er dans un deuxi me temps Organisation du projet conventions et outils PREMI RE PARTIE Chacun son compte Qui a d velopp cet algorithme incompr hensible
462. orrespondent des op rations primitives Pour cela vous pouvez adopter une politique de nommage et l API de r flexion comme le montre l exemple ci apr s Les motifs de conception Design Patterns 47 CHAPITRE 10 Un patron de m thode class MyComplexAlgorithm private function _part1 echo __FUNCTION__ n private function _part2 echo __FUNCTION__ n It ration sur l ensemble des m thodes qui constituent le corps de notre algorithme public function execute reflect new ReflectionClass MyComplexAlgorithm methods reflect gt getMethods foreach methods AS method if substr method gt name 0 5 _part continue this gt method gt name 0 algo new MyComplexAlgorithm algo gt execute RESSOURCE G n rer automatiquement vos motifs de conception En vous rendant l adresse suivante vous pouvez g n rer automatiquement vos motifs de conception et proposer des configurations pour automatiser la g n ration des motifs que vous souhaitez gt http php openstates org generateur_de_motifs php TROISI ME PARTIE Bonnes pratiques de d veloppement en PHP Ces chapitres s adressent aux d veloppeurs et aux chefs de projet d sireux d optimiser acc l rer et d boguer des applications PHP Cette partie qui repose sur de nombreux exemples pratiques vous ensei gnera les principaux r flexes de d veloppement
463. ou leur philosophie L volution de PHP est fortement li e son esprit qui peut se r sumer en trois mots simplicit ouverture et souplesse Les volutions de PHP sont toujours influenc es par une coute massive des besoins de ses utilisateurs ce malgr l volution de cette communaut Depuis quelques ann es nous voyons de plus en plus d utilisateurs issus de milieux professionnels et ce ph nom ne a t d terminant pour les volutions de la version 5 Dans ce qui n volue pas ou tr s peu PHP reste tr s souple avec le lot d avantages et d inconv nients que cela engendre Il reste galement un outil tr s simple apprendre et pourtant tr s complet PHP est tr s l coute des technologies mergentes La plate forme est r solument tourn e vers lavenir en proposant des fonctionnalit s fortement li es aux nouvelles technologies de l information et de la communication NTIC l interop rabilit des syst mes et le Web 6 Best Practices PHP Pourquoi PHP est il libre Retirer PHP du monde du logiciel libre c est lui retirer son me et mettre sa p ren nit en danger PHP repose sur le logiciel libre depuis le commencement Le d ve loppement de PHP est ouvert et vit de ses nombreux contributeurs Gr ce ce sys t me et la popularit de la plate forme qui ne cesse de cro tre la r activit de ses mises jour est imbattable PHP est gratuit ouvert simple et populaire Il est
464. ouar attentes E EREE AA 99 Choix des outils E E E EE EA E E EEE EE TEN 100 SZr t oies d aInstalation sis sinias RERE REEE EEEE AEEA EAE 100 Un environnement au service des quipes projet 101 Construire un environnement sur mesure 101 Architecture de l environnement 101 D terminer les besoins 102 S lecrionner les outils nets AE ns a D A AA NE aa 102 valuer les interactions entre les diff rents outils sn rte See S 103 Passer GLACES Se NS TE te NE ane AE NA 104 Place du framework dans l environnement 104 Outils utiles l installation de l environnement 104 Int grer l environnement l intranet de l entreprise 105 D velopper des fonctionnalit s pour l environnement 106 Suivi planifi de la qualit nightly build 107 quoi servent les t ches planifi es 3 imiasilaitianleast 108 Contr les automatis s et lancement des tests 108 G n ration du rapport de qualit 24 4 sut ee rie tan nent 109 Op rations de sauvegarde A ea pos dt er A dpi aies 110 Exemple de proc dure de sauvegarde sise Le rte Pan Site 110 G n ration des archives 114 T ches de maintenance
465. ous souhaitez le traduire en code Pour cela vous avez deux solutions le faire la main ou utiliser un g n rateur Dans un premier temps il est conseill de le faire la main Si votre projet est petit le temps que vous gagnerez automatiser est n gligeable Par ailleurs pour s impr gner de la structure du code de votre application rien n est mieux que de d velopper vous m me son squelette Si vous tes habitu manipuler des classes et que votre projet en comporte beau coup alors il existe des g n rateurs qui cr ent des fichiers contenant le squelette de votre application et ventuellement un peu de code Qu est ce qu un g n rateur de code Un g n rateur de code est li un outil de mod lisation Il part des diagrammes cr s et g n re automatiquement une partie de votre application Figure 8 21 Mod le Code PHP Principe du g n rateur de code gt lt lt _ G n rateur d gt N S i ill A l ments de mod lisation utiles PHP EC CHAPITRE 8 Un g n rateur simple va construire le squelette de votre application partir d un dia gramme de classes statique Ce squelette comprend la d claration des classes des m thodes et des propri t s Un g n rateur plus abouti peut g n rer du code partir de diagrammes dynamiques tels que les diagrammes de s q
466. oy 2005 7 45 13 masterfiow sth ex fdap ath ex save_photos oho Severe bsolte 14 May 2005 17 45 13 macterflow ath c x fdap sth ex save_photos php Severe Slow Function Execution 14 Moy 2005 17 38 53 masterflow ath ex fdap ath cx save photos php Moderate clone wizard Clone a server configuration to additional server s M configure Alert Rules Change Alert Rules on a server M Configure PHP Settings Change PHP Settings on server M Define Action Types Add Change action types Define Action Rules Add Change action rules for the events Les onglets Zend Central et Performance mettent en avant des statistiques et des for mulaires pour effectuer de nombreux r glages La figure 17 2 est une copie d cran de la premi re page de l outil d administration et la figure 17 3 une copie d cran Exploiter un environnement d ex cution cl en main CHAPITRE 17 EN d une des nombreuses fonctionnalit s li es la performance dont la gestion opti mis e de la mise en cache Figure 17 3 s i Zend Platform EEA CE Pertormance BOROT C E Un outil de gestion de la Console Settings File View Testing ZDS performance gestion du cache File view F otp 293 Moy 2005 10 27 05 nemo ricase Restart Apache z g a r g Show directories containing Cache Dont Define Update Clean Undo All Files E Document Roots IC web masterflou srce Agenda Ecocho
467. pachectl start RESSOURCES En savoir plus sur les directives de configuration d Apache Apache est un serveur HTTP tr s complet Le fichier httpd conf comprenant la configuration d Apa che et de ses modules est accompagn d une documentation fran aise sur le site officiel ainsi que de quelques ouvrages gt http httpd apache org docs 2 0 fr Apache 2 guide de l administrateur Linux de Charles Aulds aux ditions Eyrolles 1 Serveurs LAMP de Michel Dutreix aux ditions ENI D finition des exigences pour l exploitation QUATRI ME PARTIE Proc dure de mise jour Une fois que votre serveur HTTP est op rationnel vous pouvez le recompiler en modifiant la configuration des modules ou en rempla ant vos sources courantes par des sources plus r centes Recompilation avec mise jour des sources A A A A BA A A A A AA cd usr local src wget http lt url gt httpd 2 lt new version gt tar gz tar xzf httpd 2 lt new version gt tar gz rm f httpd 2 lt new version gt tar gz cp httpd 2 lt old version gt my_configure httpd 2 lt new version gt my_configure cd httpd 2 lt new version gt chmod 700 my_configure my_configure make make install cd rm rf httpd 2 lt old version gt L exemple pr c dent effectue les op rations suivantes ligne par ligne D placement dans le r pertoire de compilation T l chargement des sources de la nouvelle version
468. pas prioritaire tout doit pouvoir tre fait et visualis en ligne de commande EXEMPLE PRATIQUE Acteurs en interaction avec UNANYM Cette figure liste les acteurs qui seront en interaction avec le syst me sA 3 Administrateur D veloppeur diteur Agent de monitoring Figure 8 2 Acteurs en interaction avec notre syst me 186 Mod lisation en UML pour PHP DEUXI ME PARTIE EXEMPLE PRATIQUE Cas d utilisation du projet UNANYM Pour ce projet nous avons choisi de faire un diagramme de cas d utilisation pour cha que type d acteur UC des UC des agents lt administrateurs UC des d veloppeurs Figure 8 3 Paquetages repr sentant les cas d utilisation use case de chaque acteur Les cas d utilisation li s l administrateur Activer d sactiver un agent Modifier un fichier Configurer un agent gt de configuration Maintenir un agent de monitoring Configurer le Configurer gurs monitoring l environnement Rechercher une commande Maintenir une commande ajout modification PS suppression xecuter une commande Activer d sactiver une application Visualiser l tat du syst me Lancer un programme script Maintenir les applications D packager une application Figure 8 4 Cas d utilisation de l administrateur l ments de mod lisation utiles
469. pements Pour cela voici un certain nombre de questions sur lesquelles nous pouvons nous baser Quelles technologies interviennent dans le d veloppement Combien d applications vont tre h berg es Quels types d applications devront tre g r s applicatifs portables destin s tre distribu s sur des syst mes diff rents ou applicatifs sp cifiques l environnement d ex cution Quelles bases de donn es MySQL PostgreSQL LDAP vont tre utilis es Combien de personnes vont travailler en m me temps sur l environnement de d veloppement Qui d veloppeurs architectes clients doit avoir acc s quoi d p t de don n es base de donn es logs fichiers statiques depuis o en interne de l ext rieur S lectionner les outils Une fois les besoins identifi s nous devons choisir les outils qui y r pondront en fai sant attention d viter les redondances et de pr voir leurs volutions futures voir le choix des outils dans la section pr c dente Une complexit relative Ces outils peu vent tre class s dans des cat gories distinctes Tableau 4 1 Classement des outils installer dans l environnement d ex cution Cat gorie Exemples d outils D mons princi Apache httpd rsync synchro BIND DNS Syslog xinetd acc s CVS pop rsync paux etc Sendmail mail slapd Idap crond t ches p riodiques etc Programmes et PHP libxml mysql Idap etc libra
470. php Le court historique propos dans cet ouvrage est inspir de l historique officiel Naissance de PHP Initialement PHP tait une biblioth que Perl r dig e par Rasmus Lerdorf en 1995 Il s en servait pour mettre disposition son curriculum vitae sur Internet Au fur et mesure qu il ajoutait des fonctionnalit s Rasmus a transform la biblioth que Perl en une impl mentation C Il d cida par la suite de partager son code pour que tout le monde puisse en profiter ce qui attira les premiers contributeurs PHP FI PHP FI est le sigle de Personal Home Page Form Interpreter Cette premi re ver sion poss dait d j une syntaxe similaire celle que nous connaissons aujourd hui PHP FI 2 Publi e en novembre 1997 c est la deuxi me refonte en langage C de PHP ce moment l plusieurs milliers de personnes dans le monde utilisent d j PHP et environ 50 000 noms de domaines indiquaient utiliser PHP La dur e de vie de cette version aura t tr s courte avec l arriv e de PHP 3 PHP est il adapt vos besoins RE CHAPITRE 1 PHP 3 PHP 3 fut une refonte compl te initi e en 1997 par deux d veloppeurs Zeev Suraski et Andi Gutmans La plate forme telle que nous la connaissons actuellement est issue de cette version Dans un effort de coop ration et de compatibilit avec les anciennes versions de PHP FI Zeev Andi et Rasmus d cid rent d annoncer PHP 3 comme tant le successeur de PHP FI
471. pitre gt http www openstates com php Les motifs de conception peuvent tre class s en plusieurs familles e les motifs de cr ation qui influent sur la mani re dont les classes et les objets sont instanci s et configur s e les motifs de structuration qui d finissent des structures types faisant intervenir plusieurs classes e les motifs de comportement qui influent sur l algorithmique et la r partition des t ches entre les objets Les motifs de cr ation La fabrique the Factory method Le but de ce motif est de simplifier la cr ation de certains objets Il est tr s pratique et souvent utilis Son principe de base est de d l guer l instanciation d un objet un objet sp cial cr ation afin de s abstraire d une politique d instanciation Les motifs de conception Design Patterns CHAPITRE 10 RETENR L gende de pr sentation des motifs Nous utiliserons deux sch mas pour la pr sentation des diff rents motifs e un diagramme de conception qui traduit de mani re intuitive le principe de fonc tionnement du pattern e un diagramme UML qui introduit l architecture technique de chaque motif Vous pouvez utiliser la l gende repr sent e par la figure 10 1 pour la lecture des illustrations Un objet concret classe A 1 Un mod le d objet classe a GS __ abstraite B Autilise ou fait appel B k L entit A fait appel p Soit
472. plates Path Du dentiste 332 Utilit dun moteur de templates nl eee anne mas 332 Utilit d un compilateur de templates 5242n 444 nn it 333 Choix d un moteur compilateur de templates 335 Quelques crit res consid rer dans le choix de votre moteur de templates 335 Exemples d utilisation avec Smarty 337 Classe d inifiahisa ion 338 Appel du moteur de templates dans un code source PHP 339 Cr ation dun template Smarty LS red ete 339 Utilisation de PHP comme moteur de templates 340 Contraintes li es aux moteurs de templates n 2e es eus 341 CHAPITRE 14 Assurer des d veloppements PHP performants et polyvalents 343 Interactions avec d autres plates formes 344 Possibilit s offertes par PHP 5 554 uit ane einen en 344 Couplage fort corper dite dada sine tr fist en en de CON 344 Faire interagir PHP et Java SERRES te RE tte 344 Faire interagir DARCOS pa a tA a E i data 346 Couplage l che 53485 caen ne ae ete ES ent 350 Services we ET A E E E e NOS E ONE S 353 D et utilit arity e a n E EE 353 Choisir une solution d interop rabilit 354 SOAP un standard polyvalent se nes ere LES ete 355 REST une solution simple et performante 1 A int 357 XML RPC une autre alternative
473. plus sur la g n ration de code Quelques essais sont votre disposition sur Internet Ils sont facilement accessibles par l interm diaire de votre moteur de recherche pr f r Un bon ouvrage existe galement sur ce sujet en anglais D Code Generation in Action de Jack Herrington aux ditions Manning gt http www codegeneration net cgia Figure 14 18 Strat gie de g n ration pour la gestion de la logique m tier Objets M tier G n ration Basede donn es Gabarits de Configuration pr sentation centralis e de la Services CESE Web Limites et dangers de la g n ration de code Le premier danger de cette discipline est la cr ation de code incorrect Pour une g n ration de code agile il convient non seulement de blinder le g n rateur en filtrant les informations et en effectuant des tests de syntaxe mais aussi de pr voir un Assurer des d veloppements PHP performants et polyvalents ET CHAPITRE 14 m canisme de tra abilit des erreurs Ce m canisme peut tre fourni par les tests unitaires le d bogueur ou un syst me de log La g n ration peut apporter un niveau de complexit suppl mentaire Lire un fichier de code est facile Imaginer tout ce que peut fournir un g n rateur et imaginer le code produit avant sa g n ration est une op ration plus d licate Les applications d intelligence artificielle qui exploitent la g n ration et la r g
474. pos e dans ce chapitre L diteur que l on ma trise L diteur doit pouvoir accompagner vos travaux en apportant les fonctionnalit s et le confort n cessaire une productivit maximale Il n existe pas d diteur parfait s adaptant du premier coup tout d veloppement et tout individu Par exemple un d veloppeur exclusivement habitu UltraEdit aura du mal s adapter un diteur comme VIM M me si la ma trise de ce dernier permettrait une productivit in gal e dans le cadre de votre projet son apprentissage serait long et fastidieux CONSEIL A guisez vos facult s d adaptation N oublions pas que PHP est une plate forme qui volue beaucoup et que les diteurs sont eux aussi en volution constante Votre facult d adaptation ces changements et aux caract ristiques de plusieurs diteurs vous permettra d voluer plus facilement tout en assurant une bonne productivit De mani re g n rale on constate long terme que les facult s d adaptation prennent toujours le dessus sur les habi tudes et la sp cialisation Dans votre d marche de recherche de l diteur id al vous serez amen en essayer plusieurs afin d en appr cier l utilisation Les essayer tous serait fastidieux car les di teurs PHP sont nombreux et diff rents les uns des autres Cette d marche ne serait pas non plus tr s objective Par exemple un diteur comme Eclipse peut rebuter lors d un premier test ave
475. pour l exploiter e L installation en module statique le serveur HTTP int gre PHP dans sa compi lation D un point de vue fonctionnel le r sultat de l une ou l autre des solutions ne change rien L installation en module est plus facile maintenir dans la mesure o vous n avez pas besoin de recompiler Apache chaque fois que vous voulez compiler PHP En revanche l installation statique est l g rement plus performante et peut tre envi sag e si vous utilisez PHP de mani re intensive avec Apache Installation en module dynamique Pour effectuer cette installation nous allons partir sur le m me principe que pour la compilation d Apache pr c dente e r cup ration des sources e cr ation du fichier my_configure e compilation et installation Les sources de PHP se trouvent l adresse suivante http www php net downloads php Compilation de PHP en module dynamique cd usr local src wget lt url_des_sources gt tar xzf php lt version gt tar gz cd php lt version gt configure help less vi my_configure D finition des exigences pour l exploitation QUATRI ME PARTIE La commande configure help less affiche la liste des options que vous pouvez utiliser pour la pr compilation de PHP Vous pouvez ainsi reporter votre choix dans un fichier my_configure Vi my_configure dont voici un exemple Contenu du fichier my_configure de PHP l bin sh
476. pour obtenir des niveaux de s curit de performance et de stabilit optimaux Par ailleurs prendre connaissance de la configuration et des contraintes de l environ nement de production qui va h berger vos applications PHP est une d marche de pr voyance qui vous fera gagner du temps parlez en votre responsable d exploita tion Vous aurez ainsi les moyens de mieux adapter les d veloppements aux caract ristiques de l environnement et vice versa Il va de soi que ce chapitre s adresse des quipes ayant la possibilit de param trer elles m mes leur environnement afin dy h berger des applications sur mesure Lier un environnement sp cifique des applications sp cifiques donne de tr s bons r sul tats mais n apporte pas la portabilit n cessaire des d veloppements dont les sources sont destin es la diffusion En revanche vous apprendrez gr ce ce chapitre que le comportement d un script PHP d pend aussi de l environnement d ex cution Avoir une bonne connaissance des configurations et des ressources courantes et sp cifiques apporte une aide au d veloppement d applications portables 382 D finition des exigences pour l exploitation QUATRI ME PARTIE S adapter aux caract ristiques de l environnement d ex cution Ce n est pas au moment du d ploiement en production que vous devez vous aperce voir qu une contrainte d exploitation emp che votre application de tourner correcte me
477. ppels KCacheGrind est un outil tr s complet qui comporte de nombreuses autres fonctions vous de le d couvrir si vous travaillez sous Unix Figure 12 10 Aper u de l interface de KCacheGrind 8er Eh Vew Go setings Hep Heos eean x LE rumvon E noganooe 000200000 CO 1 C 1631 E 42 509 ol CO 22607 4MILMPLATE 8t CD SCD 6 1 Msicoome CO SOI 6i 2MXML check contare sai C n6 C 2 43 1 MAUN authenticate CI 002 41 2MAUTHrepdate_1esskn CI 2802 41 1 TEMPLATE TEMPLATE CDI SC 1e sing CO 322077 2 1 MX ML gt xe transom CI 847027 24 1 MMVSELECT gt get um Ey CO 21 1 MAUTHomMe sesion CI mE W 1MMYSELECI gt MVSELEC CI oC 19 1MINACE debbey CO 30607 17 1 MAUTH rente _sesson f C C WEI 5 Mrwrite SOS 2MTRACE TRACE CI Si 1287330 1269 4 MITEMPLATE gt automahe 260225 4e rsy 2RCDI2R 2e 2607 28 4 Mtrend 21801218 3 Mine 21201212 6 Motion SMIC 27 IWMYSELECH execute 100 160 2 MOOMOocment gt _ eons 1907 178 4 Minencer IHC IA 2 Ms reri MSC 145 4r 12027 12 1 oro NCIS USERS USER CI 10707107 1 AUTH have permission CO 10770 33 7 MMYSELECT gt rext row OI YO 9 mex Co SC 2 MAUTH get p ot skn 78 1 Mgmdate 55 1 Marat 53 3 MTRACE info J 31 1 rw 20 1 MAUTH gt updste_sassion J 18 1 MAUTIHked vassion 1 _0 0 MAUM ere ui D out porot 047240 i Total Tek Cost 101 331 T plj TRACE gt security_ log Times Caers MC Camp Sourc
478. pplicative apparaissent dans la plupart des sujets pr sent s dans cet ouvrage Vous pouvez galement consulter la documentation de PHP d di e la s curit de vos applications l adresse suivante gt http www php net manual fr security php Installation configuration et maintenance du serveur de production Nous avons d j abord dans le chapitre pr c dent de nombreux points de s curit concernant la compilation et la configuration du serveur HTTP et de PHP Nous tendrons ici les aspects s curit l environnement et donnerons quelques pra tiques utiles pour la mise en place de diverses briques de s curit dans l ordre suivant S curiser un serveur apr s installation du syst me Pr voir tous les cas de catastrophes possibles et d finir des strat gies de s curit suppl mentaires d s l installation des programmes utiles serveur HTTP PHP base de donn es etc Mettre en place une proc dure de sauvegarde restauration tape essentielle pour r agir en cas d incident grave Produire des rapports d incidents pour ma triser tout moment les ventuels pro bl mes li s la plate forme ou aux applications Assurer la disponibilit s curit et maintenance 407 CHAPITRE 16 CONVENTION Un serveur est il une machine ou un programme On parle souvent de serveur pour d signer soit une machine un ordinateur qui rend des services soit un programme un d mon ou un servi
479. pps admins rw phpapps projet1 viewers r Dans lexemple ci dessus nous interdisons dans un premier temps tout acc s aux d p ts sauf lutilisateur guillaume Puis nous donnons acc s en lecture et cri ture l ensemble du d p t phpapps aux utilisateurs du groupe admins Enfin les uti lisateurs du groupe viewers ont acc s en lecture au r pertoire projet1 du d p t phpapps Les utilisateurs doivent tre pr sents dans le fichier svnpasswd Pour cr er des utili sateurs vous devez utiliser la commande htpasswd comme ceci Cr ation d un utilisateur guillaume gt htpasswd svn svnpasswd guillaume Une fois la commande lanc e elle vous demandera le mot de passe de l utilisateur cr er et inscrira cet utilisateur dans le fichier svnpasswd RESSOURCE Pour aller plus loin avec Subversion Il existe une documentation en ligne tr s compl te de Subversion l adresse suivante gt http svnbook red bean com Organisation du projet conventions et outils PREMI RE PARTIE Import de donn es L import de donn es se fait simplement gr ce la commande svn import Import de donn es dans le d p t phpapps svn import mes donnees http 1localhost svn phpapps Cette op ration importe les donn es du r pertoire mes donnees dans le d p t phpapps Op rations de base L outil en ligne de commande de Subversion a l avantage d tre explicite et f
480. priorit s la r u tilisabilit la facilit de mise en uvre la robustesse et les performances Ce framework est accompagn d une documentation compl te Un framework bas sur un syst me de pilotage d v ne ments le motif MVC et le moteur de templates Smarty pour les applications web orient es objet Un framework g n rique s rieux sous licence BSD pour tout type d application Une documentation compl te est disponible en ligne sur le site officiel Un framework abouti dont l objectif est la r utilisabilit des composants Avec Sitellite vous pouvez crite du code concis l gant et maintenable La vocation de ce framework est de fournir des compo sants g n riques tr s faciles adopter pour le d velop pement de sites web Ce framework est une impl mentation PHP du projet Jakarta Struts destin aux applications Java Abr viation de Web Application Component Toolkit Le but de ce framework et de fournir des impl mentations de motifs de construction design patterns Sa philoso phie le remaniement continu refactoring et l exploita tion des tests unitaires par l interm diaire de l application SimpleTEST Un projet nomm LIMB pro pose des outils de cr ation d applications CMS bas es sur WACT Un CMS qui int gre un framework sur lequel d autres applications peuvent s implanter Ce projet poss de un site web complet Un framework bas sur une librairie de composants r u tilisables
481. projet eXtreme Programming de Jean Louis B nard Laurent Bossavit R gis M dina et Dominic Williams aux ditions Eyrolles 9 Def Lart de la supercherie de Kevin D Mitnick et William L Simon aux ditions Campus Press 10 UML Mod liser un site e commerce de Pascal Roques aux ditions Eyrolles 11 Unix de Christian P lissier aux ditions Herm s 12 Direction PHP mensuel dit par Nexen http www nexen net 13 PHP Solutions magazine mensuel pratique sur PHP Index Symboles ___call 207 __ clone 208 229 __FILE__ utilisation courante 300 __ get 206 _ set 206 225 __ set __get exemple d utilisation 206 __ sleep 208 __toString 208 276 exemple pratique 276 _ wakeup 208 _zval_struct 299 _zvalue_value 299 A abr viations 59 abstract factory motif 227 abstraction de bases de donn es 167 accesseur 216 acteur cas d utilisation 188 activit diagramme de 195 exemple pratique 196 adaptateur motif 233 AddType 404 adresse IP r seau s curit 407 AFUP Association fran aise des utilisateurs de PHP 8 agent de surveillance 420 agile framework 158 agr gation diagramme de classes 191 allow_call_time_pass_ reference 390 Ambivalence framework 153 analyse fonctionnelle 183 Apache compilation 396 mod _layout 384 mod_proxy 384 mod_rewrite 384 modules 384 versions 385 APC Alternative PHP Cache 376 configuration 376 exemple pratique 377 installation 376 utilisation 377 ap
482. que A B C FR Les possibilit s de customisation L auto compl tion Doa La gestion de templates de code L analyseur syntaxique Le g n rateur de documentation L explorateur de fonctions L explorateur de classes IEE L explorateur de fichiers EAL int gration CVS Subversion IEEE L int gration du client FTP Le navigateur int gr EEJ Organisation du projet conventions et outils PREMI RE PARTIE RESSOURCE Ce questionnaire en ligne Ce processus peut vous para tre un peu compliqu Si vous n avez pas la patience de le suivre le ques tionnaire existe galement l adresse ci dessous Vous aurez juste r pondre aux questions et les r ponses vous seront automatiquement calcul es Ce questionnaire en ligne gt http www openstates com php S il manque un diteur la liste ou si vous souhaitez effectuer une rectification il est possible de le faire sur ce questionnaire en ligne Les r ponses Pour trouver les diteurs qui vous sont adapt s remplissez la derni re colonne du tableau avec vos r sultats A B ou C en faisant correspondre les num ros du ques tionnaire et les num ros des lignes La derni re ligne du tableau de r ponses sert inscrire le score obtenu pour chaque diteur Pour le calculer additionnez le score obtenu pour chacun d eux sur chaque ligne sachant que e si vous avez mis et qu
483. que gt Pr sentation de templates Code PHP Templates PHP d veloppeurs designers On utilise souvent les templates pour cr er du code HTML qui concerne les aspects pr sentation Toutefois un moteur de templates peut galement avoir d autres utilit s Il sert par exemple cr er du code PHP ou Python des flux XML ou tout document qui peut tre produit partir d un gabarit RAPPEL Templates et motifs de conception Les templates et les motifs de conception se compl tent parfois Le plus connu des motifs utilisant les templates est MVC mod le vue contr leur Avec ce motif le moteur et ses templates sont acteurs de l l ment vue Le chapitre 2 vous donnera davantage de d tails sur le motif de conception MVC Utilit d un compilateur de templates Un moteur de templates construit directement un document partir d un gabarit et d un ensemble de donn es Un gabarit contient par exemple du code HTML destin cr er un document web Pour ins rer les donn es dans le gabarit HTML le moteur de templates utilise un m ta langage disposant les donn es dans le gabarit et cr ant des listes avec des boucles Exemple de gabarit lt html gt lt head gt lt title gt page gt titlel lt title gt lt head gt lt body gt lt h1 gt page gt title lt h1 gt lt ul gt ER Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE foreach fro
484. que permet de mieux s approprier une m thode de gestion de projet N h sitez pas mettre en place des r unions techni ques pendant lesquelles chacun pourra s exprimer apprendre pratiquer et com prendre la logique des proc dures mises en place Organisation du projet conventions et outils PREMI RE PARTIE Adaptation des conventions la m thode de gestion de projets Rappelons nous que la simplicit de PHP est ce qui fait son succ s Les m thodes que nous mettrons en uvre les mod les et les outils que nous utiliserons devront tre choisis et utilis s dans cet esprit Les m thodes agiles vous apporteront des bases m thodologiques solides pour la ges tion de vos projets et de votre strat gie d veloppement Conna tre et pratiquer une m thode agile dans le cadre d un projet PHP est recommand si vous devez travaillez en quipe sur un projet s rieux MVC Model View Controler est un motif de conception pour site web voir cha pitre 10 Il vient en compl ment des m thodes agiles qui ont un champ d action dif f rent Nous verrons comment tirer parti de MVC dans le d veloppement d applica tions web en PHP Les m thodes agiles Les m thodes agiles sont constitu es d un ensemble de valeurs principes et pratiques utiles la gestion d un projet informatique Elles ont un double avantage pour PHP e Elles consid rent que dans une majorit de projets le besoin peut voluer tout momen
485. quelques pratiques de mod lisation agile sont dans la plupart des cas vivement conseill es e Respecter les standards de mod lisation quel que soit le type de mod le que vous avez choisi e Utiliser les motifs de conception autant que possible cela favorise la compr hen sion de la solution ainsi que sa fiabilit et sa simplicit e carter les mod les temporaires pour ne pas s encombrer avec des informations qui ne servent plus Le refactoring remaniement peut galement s appliquer votre architecture e Mettre en place des tests unitaires avant l impl mentation est galement une tr s bonne id e pilotage du d veloppement par les tests unitaires chapitre 12 Optimiser le mod le pour PHP CHAPITRE 9 205 Particularit s et limites de la POO avec PHP 5 Fonctionnalit s objet disponibles avec PHP 5 Le mod le objet de la version 5 de PHP n a rien envier celui de langages comme Java ou C Il est complet et permet de tout faire ou presque Nous ne fournirons pas ici une liste d taill e des fonctionnalit s qui nous sont offertes Elles sont dispo nibles dans la documentation l adresse suivante gt http www php net manual fr language oop5 php En revanche voici dans cette section quelques fonctionnalit s utiles qui font la valeur ajout e de PHP 5 par rapport d autres plates formes qui proposent la programma tion objet Il est int ressant de les avoir en t te avant d ent
486. r usr local 1ib php extensions ERED extension apc so Cris V rification de la pr sence de la documentation d APC liste des modules php m PHP Modules apc ctype curl Configuration Les directives de configuration fournies avec APC permettent d effectuer plusieurs r glages tels que l activation de l extension la taille des segments de m moire la Assurer des d veloppements PHP performants et polyvalents CHAPITRE 14 dur e de vie du cache 4 le comportement des processus les motifs de fichiers mettre en cache expressions r guli res et l activation en ligne de commande Ne pas sp cifier de r glages dans php ini signifie que la configuration par d faut est utilis e Vous pouvez la consulter la page suivante ainsi que la signification de l ensemble des directives http livedocs phpdoc info index php l fr amp q ref apc Utilisation APC propose des fonctions de contr le du cache en PHP L exemple suivant donne une id e des possibilit s offertes par l extension Rendez vous galement au chapitre 12 dans la section qui concerne la mise en m moire partag e de variables et d objets Quelques fonctions PHP mises disposition par APC Liste des pages php compil es en cache avec leur fr quence de sollicitation cache_info apc_cache_info foreach cache_info cache_list AS file echo file filename lue echo file num_hits fois lt br g
487. r duites gr ce ce m canisme Les figures 17 4 et 17 5 illustrent le principe d interaction entre Zend Studio et la Zend Platform Les bogues d tect s sur la plate forme de production sont automati quement transmis l diteur qui affiche le fichier et la ligne incrimin e Firewall Firewall dore sollicite Apache lors Apache redirige ili les requ tes vers Nc to de la session de un r pertoire de _ oa traitement utilis pour le processus Navigateur de d bogage R pertoire a de Cerveur Traitement Web Client Internet Apache Zend Studio PPANS Eg sesi aoane Processus er de d bogage du serveur L Zend Platform cr e un tunnel de communication double sens une connexion persistante avec Zend Studio Zend Studio Une interaction native avec Java La Zend Platform propose un pont qui fait appel nativement aux classes d un envi ronnement Java existant Ce pont est compatible avec les versions 4 et 5 de PHP Sa mise en uvre est ais e et la documentation propose plusieurs exemples d interac tions Il a l avantage d conomiser des ressources et d optimiser les performances en ne d marrant qu une seule JVM pour plusieurs requ tes Parmi les nombreuses fonctionnalit s de ce pont nous pouvons citer la possibilit de l exploiter en environnement J2EE et d attaquer des EJB Un exemple de sollicita tion d EJB du serveur d applications JBoss est fourni dans la documentat
488. r es WDDX serialize Echange de donn es et d objets Permet des changes d objets et de tableaux La par la s rialisation mise en uvre de ces outils est tr s simple Bases de donn es Partage de donn es changes rapides et indirects de donn es mode non connect Les solutions de coop ration entre applications PHP et non PHP par couplage l che sont nombreuses Comme l illustre le tableau 14 1 il est possible d utiliser plu sieurs techniques qui ont chacune ses caract ristiques Avant d introduire les services web voyons quelques exemples simples de mise en uvre de couplages l ches avec la s rialisation 352 Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE WDDX http www openwddx org est un protocole simple et pratique d change de donn es structur es qui fonctionne bien avec les tableaux Son principe repose sur deux op rations de base e La s rialisation lin arisation transforme les donn es en un document XML La d s rialisation d lin arisation transforme un document XML en donn es Figure 14 6 Serveur WDDX at Client WDDX WDDX un outil de xm gt s rialisation pratique utiliser S RIALISATION D S RIALISATION avec des tableaux i Array es Array Voici un exemple pratique d utilisation de WDDX pour envoyer des informations d une application serveur une application cliente adaptable d autres plates formes que PHP reconnaissant WDDX wdd
489. r unsigned char type Type de donn es courant unsigned char is_ref Est ce une r f rence vers une autre variable short refcount Compteur de r f rence A chaque fois qu une r f rence est ajout e la Valeur refcount est incr ment et inversement lorsqu il y a perte d une r f rence Lorsque refcount est 0 la m moire est automatiquement lib r e Si vous souhaitez que votre application soit portable et qu aucune configuration de PHP ou du serveur HTTP ne soit requise pour d finir l emplacement de vos fichiers et biblioth ques vous pouvez utiliser la constante __FILE__ pour extraire le chemin du dossier contenant le fichier courant Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Utilisation de __FILE__ avec include un classique include dirname __FILE__ classes ldap php Exploiter les exceptions Les exceptions PHP 5 sont un m canisme tr s pratique de gestion des erreurs Ce m canisme en PHP est similaire celui des autres langages de programmation qui proposent une gestion des exceptions La mise en place d un m canisme d exceptions n cessite la pr sence de plusieurs blocs e le bloc d essai try qui contient le code utile de votre application e le ou les amp oc s de capture catch qui traite nt les erreurs Pour apprendre utiliser les exceptions vous pouvez consulter la documentation en ligne de PHP la
490. r PHP comme outil de script pour votre syst me La version ligne de commande de PHP permet ais ment de remplacer les quivalents sh bash tcsh et per1 Suivi planifi de la qualit nightly build L op ration de construction nocturne ou nightly build met en uvre 3 op rations fondamentales sur chaque application le passage des esfs unitaires et des tests de recette la compilation et la construction du paquetage En PHP l op ration de compilation n existe pas et la construction du paquetage fichier phar est rarement pratiqu e En revanche il est vivement conseill de mettre en uvre le passage des tests Cette section sera compl t e par les op rations de suivi de la qualit et de sauvegarde que nous pouvons int grer aux t ches planifi es de notre environnement de d velop pement EUX Organisation du projet conventions et outils PREMI RE PARTIE quoi servent les t ches planifi es Soyons fain ants insiste Rasmus Lerdorf lors de ses conf rences Pourquoi faire nous m mes ce que l ordinateur peut faire notre place La t che planifi e est un outil pr cieux pour gagner du temps en exploitant ce concept e Elles prennent en charge toutes les op rations qui doivent tre trait es interval les r guliers et qu il serait absurde et fastidieux de g rer manuellement e Elles permettent la mise en uvre d une r elle strat gie de qualit gr ce au lance ment fr quent des tests et
491. r de configuration qu ils consul tent au lancement Ces fichiers doivent tre configur s correctement Ils peuvent tre diff rents de leurs homologues sur les serveurs de recette et de production notam ment en ce qui concerne la gestion des erreurs Mettre en place l environnement d ex cution pour le d veloppement LE CHAPITRE 4 La configuration de PHP php ini Elle se fait par l interm diaire du fichier php ini situ par d faut dans le r pertoire prefix lib remplacez prefix par le r pertoire d installation choisi lors de la compilation Il peut galement tre situ dans etc ou usr local etc Ce fichier contient les param tres de configuration de PHP et de ses extensions Voici les principales options de configuration recommand es en environnement de d veloppement Configuration des tags PHP short_open_tags off asp_tags off Le param tre short_open_tags d finit si la pr sence du tag lt est autoris e pour annoncer le d but d un script PHP Il est recommand de laisser ce param tre off car une d claration de ce type lt xml version 1 0 gt ferait chouer votre script PHP Configuration des erreurs error_reporting E_ALL E_STRICT display_errors On Le param tre ci dessus permet de d finir les types d erreurs report s par PHP La valeur E_ALL correspond tout type d erreur Il est recommand de le mettre en envi ronnement de d veloppement afin de tenir compte de l
492. r la collaboration entre les diff rents intervenants du projet 26 Assurer la p rennit des d veloppements et faciliter les op rations de mises jour 26 Permettre la r alisation de projets professionnels ambitieux 26 En exploitant le potentiel de la derni re version de PHP 26 En connaissant bien les possibilit s offertes par les ressources disponibles 27 En adoptant une architecture simple et performante 28 Simplifier et r duire la maintenance 2 tes de ts eines 29 Maintenance logicielle de la rigueur avant tout 29 Maintenance des donn es 30 Maintenance technique SE nt ARS PR SL Rares 30 Assurer une stabilit et des performances optimales 30 Mettre disposition un document crit SNS tn io sr er 31 Cochez Votre QUIPE Le anaE KEE E TAE RE de nn nt 31 Table des mati res EU Adaptation des conventions la m thode de gestion de projets 32 Les m thodes agil s 5 ts A E mn ne its de 32 Les 5 valeurs essentielles des m thodes agiles 33 LeXtreme Programming XP ss 2e Rabanne ee 34 Aper u des pratiques de programmation propos es par XP 35 XPetle travai d guipe ST ER PR OS re E SR S 36 CRAN projet RU AE iannau TEENA es MA NN EM SES AGE 38 MVC RES RS ND Re nr nel pains NAN 39 APCE pratique EE nnen een nt Een Re eu 40 B tir s
493. r pallier cela plusieurs optimiseurs d opcodes sont disponibles eAccelerator APC Zend Optimizer PHP est il adapt vos besoins a CHAPITRE 1 Nous verrons dans plusieurs chapitres de cet ouvrage comment optimiser les perfor mances de PHP par des configurations et des r flexes de codage ad quats Peut on d ployer des applications PHP sur plusieurs serveurs Plusieurs solutions s offrent vous si vous souhaitez d ployer vos applications en cluster En revanche ce concept est nouveau et pas encore bien abouti avec PHP bien que de s rieux travaux s engagent dans ce sens Voici deux solutions que vous pouvez d ores et d j adopter e Utiliser un environnement d ex cution qui le permette tel que la Zend Platform que nous d couvrirons au chapitre 17 e En tenir compte dans votre architecture logicielle Il est parfaitement possible de g rer une r partition de charge travers des m canismes haut niveau assur s par votre code PHP CULTURE Cluster Un cluster ou grappe d ordinateurs est un ensemble de plusieurs machines physiques constituant une seule et unique machine logique Chaque ordinateur constitue un n ud de la grappe du gros serveur que repr sente le cluster Ce type d architecture se retrouve notamment dans les domaines de la r partition de charge et de la haute disponibilit Qualit de d veloppement Rigueur et l gance avant tout Le maniement d outils souples et permissifs n
494. r sur le bon fichier la bonne ligne Lorsqu une erreur survient pour viter d avoir ouvrir votre diteur par vous m me puis chercher le fichier incrimin et la ligne correspondante vous pouvez compl te ment automatiser ce processus La figure 12 3 illustre la mani re dont cela se passe Pour effectuer la m me op ration avec votre propre diteur celui ci doit pouvoir se lancer en ligne de commande en sp cifiant un nom de fichier et un num ro de ligne Par exemple avec emacs pour diter le fichier 1dap php la ligne 15 il faut faire comme ci apr s Assurer la qualit d un d veloppement PHP ER CHAPITRE 12 Figure 12 3 Le De Ouverture automatique ET de l diteur sur simple clic yu ean mme x 3 5 Q Warning Invalid argument supplied for foreach in MEGA web gpn pri fraternity etc cfg php on line 63 Editer cette erreur avec emacs 7 w v b k 3 ie i y l 1 Je ique 2 et l diteur s ouvre automatiquement sur le bon Schier et la bonne ligne Ouvrir le fichier Idap php la ligne 15 emacs 15 Idap php Pour que notre lien diter cette erreur avec emacs soit op rationnel nous allons d velopper un serveur qui se charge de lancer l diteur la r ception d un fichier et dun num ro de ligne C est le client qui enverra ces informations au serveur par l interm diaire du lien qui appara tra chaque erreur et qui n cessite une petite
495. raction directe entre les acteurs du projet plut t que la contractualisation des sp cifications la capacit qu auront les diff rents intervenants s accorder sur une vision commune des travaux r aliser la qualit de leurs changes et de leurs relations sont une priorit des m thodes agiles La simplicit Elle est une garantie de productivit Le principe de simplicit n aime pas les m ca nismes complexes et trop g n riques Nous pouvons ajouter la simplicit l l gance de l impl mentation En revanche simplicit n est pas synonyme de facilit Un code l gant est un code sans doublon facilement remaniable et assez clair pour que n importe qui puisse comprendre l essentiel du premier coup d il Le feedback comme rep re et outil de r duction du risque Chaque acteur du projet doit avoir une vision objective de l avancement par des retours r guliers sur l tat du syst me Le risque est ainsi contr l collectivement tous niveaux et le projet progresse toujours sur la bonne voie Le courage De se limiter des choses simples r pondant aux besoins du moment d accepter de se d barrasser d un code trop complexe ou inutile de travailler en troite collabora tion avec d autres et d accepter de d voiler ses propres limites L humilit Reconna tre que l on ne sait pas tout et que chaque acteur du projet peut apporter son expertise et son savoir faire Une discipline humaniste
496. rande entreprise fournitures mat riels droits installations etc Plusieurs soci t s avaient d j tent l aventure qui s tait pour elles sold es par un chec Le point critique du projet tait de r ussir identifier l ensemble du catalogue des demandes possibles sur lequel les intervenants fonctionnels n avaient pas statu J ai donc pris le parti de raisonner en terme de processus et de d velopper un moteur de catalogue capable de d finir les demandes Gr ce la simplicit de PHP je wai pas h sit d velopper un l ment technique relativement complexe bien que le d lai du projet ait t de 30 jours Le succ s de la d marche reposa ensuite sur une approche it rative avec une implication r guli re des utilisateurs autour d un prototype T moignages CINQUI ME PARTIE Le d fi fonctionnel bloquant fut ensuite rel gu au service ad quat qui disposait cette fois d un outil de travail capable d accepter tout type de besoin gr ce un cata logue volutif Quatre ans plus tard l application a g r plus de 200 000 demandes en provenance de 4000 utilisateurs et a vu son tendue fonctionnelle largie d autres domaines sans qu aucune tape de programmation suppl mentaire ne soit n cessaire Ma plus mauvaise exp rience fut sur un autre projet m tier de taille pourtant moyenne Bien que les premi res phases aient t un r el succ s cahier des charges maquette
497. ransformation echo n xslt_errno xh echo xslt_error xh gt Il est galement utile de savoir que les navigateurs modernes effectuent pour la plu part eux m mes la transformation XSLT si vous sp cifiez dans le header que le flux envoy est bien du XML avec un lien vers la feuille de styles appropri e Dans ce cas vous navez plus besoin d extension pour effectuer la transformation et vous b n ficiez d un gain de ressources en faisant travailler le client la place du serveur D l guer la transformation XSLT au navigateur lt php Un document XML accompagn d un lien vers ma feuille de styles xml lt lt lt XML lt xml version 1 0 encoding UTF 8 gt lt xml stylesheet type text xs1 href mon_style xs1 gt lt book gt contenu xml lt book gt XML Indique au navigateur que les donn es sont en XML header Content Type text xml echo xml gt Tableau 11 6 Avantages et limites de XSLT Avantages Limites Une technologie qui merge doucement mais Outil sp cialis La maintenance de feuilles XSL peut s rement Les outils de transformation sont devenir difficile le choix des diteurs reste pauvre le fiables et prouv s plus populaire est xmlspy 264 Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Les objets Au fil des ann es les langages informatiques ont volu La syntaxe proche du lan gage machine avec
498. ravail du d veloppeur consistera faire appel la classe SmartyTPL pour provo quer l affichage de donn es comme le montre lexemple suivant Appel de Smarty dans un code PHP lt php Initialisation des donn es afficher Elles peuvent provenir d une base de donn es title Liste des ouvrages disponibles books Array Bonnes pratiques PHP PHP 5 Avanc PHP en pratique Instanciation de notre moteur de templates include_once SmartyTPL class php tpl new SmartyTPL Mise en place des donn es dans le contexte du moteur de templates tpl gt assign title title tpl gt assign books books Appel du template et affichage de la page Le template book_list html est obligatoirement dans le dossier templates d fini dans la classe d initialisation tpl gt display book_Tist html gt Cr ation d un template Smarty Les templates Smarty sont des fichiers texte Les variables utilis es pour l affichage des donn es doivent correspondre celles qui ont t d clar es dans la partie d veloppement Un template Smarty lt html gt lt head gt lt title gt title lt title gt lt head gt ET Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE lt body gt lt h1 gt title lt h1 gt Affichage de la liste des ouvrages lt div class book_1ist gt foreach from books item book lt div class bookline
499. re 213 Limitation des instanciations et appels 213 Exploiter les fonctions natives fournies par PHP 213 Favoriser l interop rabilit et la p rennit du mod le 214 Lesicouches abonn nent en 214 Avantages et inconv nients des couches d abstraction 215 viter d encombrer les objets m tier 215 Joucravec la D N TICIR S ue LR DR Lens ANNEE es nes 218 Premiere etapes Dre OO Ps Da LA ee at E af De en 219 Deuxi me tape une premi re volution 3 5 unes 219 Troisi me tape volution et adaptation asus nissan va 219 Adopter les standards et s adapter Pexistant 219 EUTE Best Practices PHP CHAPITRE 10 Les motifs de conception Design Patterns 221 quoi servent les motifs de conception 222 Les motifs de cr ation 222 La fabrique the Factory method 54 2084 pute dent ue Mise 222 Principede l fabriquen pui seana a ARA RS AA 223 Miseen pratit eirig E t i EE AEE ERE D EE EE 224 La fabrique abstraite Abstract Factory rene ae es honner 227 Principe de la fabrique abstraite os ven ee tale NS 227 Remarque sur l utilisation de la fabrique abstraite avec PHP 228 Le monteur Builder 228 Prunapedu monteur eyrna done at ui SCAN
500. re documentation et d boguer votre code Il poss de des fonctions de recherche remplacement par expressions r guli res et est galement livr avec un kit de d veloppement complet pour cr er des plug ins gt http www waterproof fr PHPEd Un excellent diteur commercial PHP pour Windows qui poss de en plus de nom breuses fonctionnalit s un analyseur de performances un diteur de bases de don n es PostgreSQL et MySQL ainsi qu un g n rateur de documentation phpdocu Organisation du projet conventions et outils PREMI RE PARTIE mentor PHPEd int gre un d bogueur un gestionnaire de projets des outils de travail en quipe et une interface conviviale un bon choix pour une utilisation pro fessionnelle gt http www nusphere com UltraEdit Le succ s de cet outil est garanti depuis des ann es par de nombreuses fonctionna lit s tr s utiles et une stabilit sans faille UltraEdit est un produit commercial dispo nible en version Fran aise Il permet d diter n importe quel type de fichier dans n importe quel format Il est personnalisable volont g re les templates de code les macros le masquage de code int gre un client FTP et plein d autres outils utiles d couvrir galement le mode colonne tr s efficace dans certaines situations gt http www ultraedit com Crimson Editor Un petit diteur simple et tr s efficace pour Microso
501. re simple fiable et portable 15 Architecture minimale PHP CLI et GTK 5 2 20 44428 ae Laue 16 Architecture web PHP HTTP es hors sean Ra PR ere 17 Architecture web avanc e es Dauer et Rhode ent 17 Richesse fonctionnelle et possibilit s de PHP 18 Quepeutiune PHP PSE Samir cveti tir Nien aiy eTe ns 18 Une puissance et une simplicit in gal es pour les front ends 18 Une puissance et une simplicit in gal es pour les traitements XML 19 Un traitement simple et unifi de trois m tastructures objets documents tables Me es caen nes es nd este 19 Performances et mont e en charge 20 Le noyau de PHP Zend Engine II nee open rare 20 Limite des performances ss res de ro Tea 20 Peut on optimiser les performances de PHP 20 Peut on d ployer des applications PHP sur plusieurs serveurs 21 Qualit de d veloppement annerer nenene ana te 21 Rigueur et l gance avant tout un ae Len Ride 21 Les m thodes agiles pour le d veloppement d applications PHP 22 PREMI RE PARTIE Organisation du projet conventions et outils 23 CHAPITRE 2 D finir des conventions pour la conception d applications PHP 25 Organisation du projet conventions et outils 26 Utilit des conventions 26 Facilite
502. rigueur Evitez pour cela de mettre en ligne des configurations de ser Assurer la disponibilit s curit et maintenance 43 CHAPITRE 16 veurs qui les attirent serveur de courrier en relais ouvert open relay serveur HTTP en mandataire ouvert open proxy etc et limitez tout ce que vous pouvez limiter e Serveur HTTP et PHP nombre maximal de requ tes simultan es m moire maximale allou e chaque requ te temps d ex cution des requ tes dur e de vie des sessions r gles de r criture et proxy etc e Autres services et d mons nombre maximal de requ tes simultan es taille des pools de connexion nombre de hreads possibles etc Sympt mes et attitudes adopter en cas de probl me G n ralement le flood commence par ralentir le syst me et finit par le rendre inop rant Pour s en d barrasser ce nest pas toujours imm diat Si vous devez remettre votre site en ligne en un temps record une solution possible consiste changer d adresse IP ou changer carr ment de site physique d h bergement N anmoins il est possible que le flood soit bas sur votre nom de domaine ou que quoi que vous fassiez il finisse par revenir Dans ce cas il ne vous reste plus que la solution du d tective trouver qui est l origine de l attaque contacter son ou ses h bergeur s et exiger que cela cesse Le social engineering D finition Les hackers sont ils tous des techniciens qui agissent muets
503. rmats sp cifiques HTML PDF etc 178 DEUXI ME PARTIE Mod lisation en UML pour PHP nnnmmrmnrrnns 179 CHAPITRE 8 l ments de mod lisation utiles PHP 181 Les tapes de la mod lisation 182 Trois axes de mod lisation englobant diff rentes actions 182 Le sujet de nos exemples onununu nunana runar rn rreraren 183 Lanalyse fonctionnelle coen ee a Mate E 183 Expression des besoins exigences et contraintes 183 Quelgues questions se poser LAS LS RENE LANTA NA EE 183 R daction de lexpression des besoins SE Les Lars dE En 183 Exigences et contraintes esse hoc nasel ununure ane tits carats 184 Le diagramme des cas d utilisation 328 15e nan ane n ts ia 184 Identification des acteurs 1 Ensie tnrine Det one Ed be DS deu 184 Diagramme des cas d utilisation EL rs LS ee SN 184 Analyse technique statique 188 Les diff rents types de classes 25 ane nunnurnar nreo 189 La classem tier sssrin rer eea aa a EENE pa EE ET E 189 LEAVE POA ET E E EEE E E E E AA EAN A 189 L identification des objets m tier 4824 hippie mini anse 190 Le diagramme de classes 4 fe sante pese ae ant eat oteete eee 190 Table des mati res ET Le diagramme de classes de conception 192 Analyse technique dynamique 195 Le
504. rnent le fonctionnement du r seau et des serveurs Lorsque l encombrement d un disque atteint 95 de sa taille disponible par exemple une alerte peut tre lanc e Outils de monitoring Ce sujet fera l objet de la section suivante Mettre en place le m canisme de surveillance Vous y d couvrirez un certain nombre d outils utiles que vous pourrez d ployer pour chaque type d incident surveiller Centraliser et g rer les incidents tre en mesure d unifier la gestion de vos incidents de mani re simplifier les traite ments est un des avantages appr ciables de la centralisation Ainsi vous aurez un seul m canisme d envoi de tickets et une interface commune vous permettant de visua liser vos incidents La figure 16 6 donne un exemple d architecture pour une base centralis e d inci dents Cette architecture stocke les occurrences checks d incidents de mani re ET D finition des exigences pour l exploitation QUATRI ME PARTIE r duite en vitant les doublons dus aux incidents r p t s Elle met en uvre un sys t me d archivage d sencombrant le contenu utile Figure 16 6 Moniteurs d incidents pour centraliser les incidents Enregistrement des incidents m Base SQLite d incidents Bases checks incidents targets Archives incident id incident_type incident_type Archivage date description mail des gravity ip_address incidents application port file protoco
505. rojet conventions et outils PREMI RE PARTIE Organisation du projet conventions et outils Utilit des conventions Tout projet informatique s rieux fait l objet d une r flexion sur des conventions fixer plus forte raison lorsqu il s agit de d veloppements lourds et ambitieux L uti lit de ces conventions est multiple e faciliter la collaboration entre les diff rents intervenants du projet e assurer la p rennit des d veloppements et faciliter les op rations de mise jour e permettre la r alisation de projets professionnels ambitieux e simplifier et r duire la maintenance e assurer une stabilit et des performances optimales Faciliter la collaboration entre les diff rents intervenants du projet Chaque individu doit tre en mesure de comprendre les travaux de ses collaborateurs par l adoption d habitudes et de pratiques communes Cette unification du savoir faire doit permettre chaque intervenant d apporter sa pierre sans d border dans les domaines d expertise qui ne sont pas les leurs En d autres termes nous verrons par exemple comment faire collaborer au mieux d veloppeurs et designers sur un projet PHP Assurer la p rennit des d veloppements et faciliter les op rations de mises jour Ceci concerne en grande partie la reprise des d veloppements par un intervenant dif f rent ou apr s une p riode d arr t plus ou moins longue Le d lai n cessaire un nouvel
506. rolles com Cette base peut tre li e de nom breux d mons services et programmes ainsi qu vos applications PHP Sch ma et classes LDAP Dans la hi rarchie LDAP chaque n ud enregistrement est li une classe d finie dans le sch ma de la base LDAP Le sch ma de la base d crit la hi rarchie des classes disposition pour cr er l arbre des donn es LDAP La figure 7 12 donne un exemple de sch ma Les classes top person jusqu inet OrgPerson sont standard La classe phplnetOrgPerson a t cr e pour des besoins sp cifiques mais comme elle h rite de inetOrgPerson toute donn e cr e partir de la classe phpInetOrgPerson sera compatible avec les classes m res Fichiers texte structur s inietc Extr mement simple diter le fichier ini est souvent utilis comme fichier de configuration Il est compos d une liste de cl s valeurs ventuellement rang es dans des cat gories Le fichier ini le plus connu est le fameux php ini qui sert confi gurer l application PHP Choisir les ressources et les supports de donn es CHAPITRE 7 i ba j Attrs top cn sn seeAlso Figure 7712 top MA person description userPassword LDAP hi rarchie des classes v pilotPerson _ residentialPerson Y P Attrs person ou destinationindicator organizationalPerson postalAddress postalCode st street title etc 4 Attrs organizationalPerso
507. rs ont fortement particip l ensemble des refontes du noyau Andi Gutman et Zeev Suraski La soci t nomm e Zend emprunte chacun la moiti de son pr nom Zend est une soci t sp cialis e dans les technologies PHP Elle est le principal moteur de la plate forme dans le monde professionnel et propose des outils compl mentaires pour les entreprises tel que la Zend Platform En revanche m me si son implication est forte dans le d veloppement de PHP Zend est ind pendante de la communaut open source qui reste ma tresse du projet gt http www zend com La Zend Platform propose galement une gestion de profils centralis e groupes uti lisateurs et leurs droits utilis e en premi re ligne pour l interface L acc s la Zend Platform peut tre brid certains modules et certaines fonctionnalit s pour les groupes de d veloppeurs ou de clients par exemple En interaction intime avec PHP cet environnement d ex cution est capable de prendre en main une configuration existante et l ensemble de ses applications Les Exploiter un environnement d ex cution cl en main CHAPITRE 17 m canismes de mise en cache de gestion des performances et de rapports d incidents ne requi rent pas de configuration particuli re pour tre op rationnels La figure 17 1 met en avant les fonctionnalit s principales de la Zend Platform et permet de se faire une id e de la place qu elle occupe dans l enviro
508. rs par exemple des fichiers de configuration des templates de la couche pr sentation ou des classes sp ci fiques Dans ce cas la construction de votre application r sultera de l extrac tion des fichiers de la branche principale suivie de l extraction des fichiers modifi s de la branche secondaire qui viendront se superposer la branche principale Ce m canisme est d crit sur la figure 3 4 e Une op ration sp ciale effectu e sur l application qui devra tre appliqu e plus tard Par exemple effectuer une version de votre site web aux couleurs de no l Cette version doit tre pr par e partir du mois de septembre pour une mise en ligne en d cembre Elle concerne certains fichiers de la couche pr sentation et quelques fonctionnalit s Entre temps la version courante de l application doit continuer progresser Nous pouvons donc cr er une branche afin de faire voluer les fichiers no l en m me temps que la version courante do branch Branche Branche Fusion r ation de branches secondaire principale sp cialis es pour une application PHP W z i d a BR iE gi E gn ROD O B R OR 2 2 2 4 b Es d t O E Li s Apr s 8 modifications 3 Cr ation d un i branche 1 tat initial IE Organisation du projet conventions et outils PREMI RE PARTIE Quelques raisons de ne pas cr er une branche C est une maintenance suppl mentaire donc
509. s l originale et la modifi e ou la licence PHP qui sont toutes deux assez simples et per missives Pour plus d informations vous pouvez consulter les liens correspondants gt http www freebsd org copyright license html gt http www php net license Choix du SGBD Qu est ce qu un SGBD Lorsque l on doit manipuler un grand nombre de donn es le choix du SGBD s impose naturellement Un syst me de gestion de bases de donn es permet le stoc kage et la manipulation d un grand nombre de donn es structur es La figure 7 4 illustre les constituants fondamentaux des bases de donn es 162 Organisation du projet conventions et outils PREMI RE PARTIE Figure 7 4 tables Constituants fondamentaux d une base de donn es enregistrements relations L utilisation d un SGBD poss de quelques avantages e Un SGBD permet d organiser des informations bas es sur des gabarits identiques ex une information personne comporte nom pr nom adresse tel etc Ces informations sont rang es dans des tables qui peuvent avoir des relations entre elles e Les op rations de tri filtre et tout type d acc s aux donn es sont tr s efficaces avec une base de donn es m me s il y a beaucoup d informations stock es e Un SGBD relationnel maintient la coh rence des donn es Par exemple si nous avons deux tables li es destination et vol il est possible d indiquer au SGBD qu une destination
510. s sant par le choix de l diteur et des outils de collaboration ces chapitres vous aide ront pr parer votre espace de travail pour mettre en uvre vos projets dans de bonnes conditions D finir des conventions pour la conception d applications PHP Une des extraordinaires qualit s de PHP est sa facilit d utilisation gr ce sa sou plesse syntaxique et fonctionnelle D butant en informatique expert J2EE ou sp cialiste Delphi chacun peut aborder PHP sa mani re en un temps record La plu part des autres plates formes a contrario n cessitent de la part du d veloppeur un investissement plus ou moins cons quent Cette caract ristique propre PHP est en m me temps une opportunit et un danger Une opportunit pour tous car il est extr mement simple et rapide d adopter PHP Un danger pour le travail en quipe qui n cessite des r gles et des conventions favorables la p rennit et la qualit des d veloppements Ce chapitre aborde un sujet important pour toute organisation ou entreprise sou haitant mettre profit les qualit s de PHP Nous y aborderons l art et la mani re d organiser une quipe et un projet afin de tirer le meilleur des caract ristiques uni ques de la plate forme PHP Nous y d couvrirons galement des m thodes de gestion de projet prouv es leurs principes fondamentaux et particularit s qui font d elles des outils fiables et efficaces EM Organisation du p
511. s dans un fichier ou en base de donn es Il faudra veiller cependant ce que les constructeurs des observateurs concrets Concrete0bserver chargent la bonne valeur d tat Ce motif est beaucoup utilis pour faire de l observation d v nements sur des appli cations graphiques Il peut tre utile en PHP si votre application est compos e de nombreux modules en relations RETENIR Une interface observateur est impl ment e nativement dans PHP 5 La SPL Standard PHP Library propose une interface Observer permettant d impl menter ce motif Pour obtenir davantage d informations vous pouvez consulter la documentation de la SPL gt http www php net helly php ext spl L tat State Ce motif sert donner un objet des comportements diff rents en fonction d un tat Principe de l tat Plusieurs classes ConcreteState issues d un mod le State repr sentent un m me objet des tats diff rents Suivant l tat du contexte nous ferons appel l une ou l autre des classes ConcreteState Mise en pratique Une fonction get_home_page fait appel un objet pageManager pour r cup rer le contenu d une page web Selon que l objet pageManager ait t instanci au moment o l utilisateur tait logu ou non la page renvoy e sera diff rente En effet si lutilisateur est logu pageManager sera issu d un mod le LoguedPageManager sinon il sera issu de AnonymousPageManager
512. s g n ralement en ligne de commande Plusieurs applications permettent de maintenir un syst me g n rer des configurations serveur ou s ex cu tent comme des d mons firewall etc Une puissance et une simplicit in gal es pour les front ends PHP est tr s souvent utilis pour la mise en place de front ends Vous pouvez parfai tement d velopper votre application ou votre logique m tier en langages Java ou C et la couche pr sentation en PHP Pour cela de nombreux moteurs de templates API de bases de donn es et gestion naires de donn es sont disponibles Selon son fondateur PHP est lui m me un moteur de templates tr s efficace PHP est il adapt vos besoins E CHAPITRE 1 CULTURE Front end Un front end ou frontal est de plus en plus assimil un ensemble de pages graphiques constituant l interface entre l utilisateur et un autre syst me qui peut tre compl tement diff rent de celui utilis par le client Une puissance et une simplicit in gal es pour les traitements XML PHP supporte DOM Document Object Model SAX Simple API for XML et SimpleXML un outil permettant de manipuler tr s simplement des documents XML bas sur le back end de DOM Il propose galement un support natif pour SOAP et diverses fonctionnalit s suppl mentaires transformations XSLT XML RPC etc Traitement simple d un flux RSS avec SimpleXML lt php Ce code affiche les titres de l actual
513. s souhaitons apporter Le diagramme des cas d utilisation Un cas d utilisation use case concerne les interactions concr tes entre le syst me et ses utilisateurs Les cas d utilisation repr sentent des processus globaux il faudra viter d aller dans les d tails ce que nous aurons l occasion de faire plus tard dans le processus de mod lisation Identification des acteurs Avant de d crire les interactions entre le syst me et ses utilisateurs il convient de faire la liste de l ensemble des utilisateurs possibles Ces derniers repr sentent des r les ils ne doivent pas tre des utilisateurs physiques sp cifiques Jean Pierre mais peuvent repr senter autre chose que des tres humains Diagramme des cas d utilisation Un diagramme des cas d utilisation utilise des symboles qui sont d crits sur la figure 8 3 l ments de mod lisation utiles PHP 185 CHAPITRE 8 EXEMPLE PRATIQUE Exigences et contraintes fonctionnelles Simplification de la gestion de l environnement cette gestion devra tre cen tralis e et simplifi e Elle pourra se faire par l interm diaire d une interface intuitive Elle g rera la configuration de la plupart des programmes utiles PHP Apache etc ainsi que les configurations du syst me hosts dhcp dns Automatisation de la gestion des applications les applications devront tre packag es Pour cela un packageur d packageur sera disponible et utilisable en l
514. s un bloc try qui n est pas dans une fonction Assurer la qualit d un d veloppement PHP ER CHAPITRE 12 Trace d une exception Stack trace 0 web workspace code exceptions php 169 first 1 web workspace code exceptions php 175 firstO 2 web workspace code exceptions php 180 second 3 main D boguer et tester D bogage d applications PHP Le d bogage discipline pas toujours appr ci e sa juste valeur met en avant de nombreuses informations pourtant tr s utiles e l tat de la pile des appels en cas d erreur e la consommation de la m moire e la consommation des ressources CPU e l encha nement des actions Il y a diff rentes mani res de d boguer une application PHP La premi re consistera pour les petits scripts mettre en place une classe ou des fonctions de d bogage per sonnalis es C est le d veloppeur lui m me qui ma trise ses actions de d bogage Cette m thode tant relativement limit e il devient vite int ressant d utiliser des d bogueurs dignes de ce nom tel que apd Advanced PHP Debugger Sans d bogueur e Figure 12 2 Le d bogage permet souvent d y voir plus clair Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE D boguer avec un outil personnalis Si vous souhaitez d velopper un d bogueur personnalis voici quelques id es prendre ou laisser If if if La mani re classique
515. s d veloppements PHP performants et polyvalents EJ CHAPITRE 14 CONSEIL Quelle base de donn es pour stocker du cache Les donn es de cache ont cela de sp cifique elles sont faites pour tre lues Les op rations d criture sont en revanche plut t rares Un outil simple et pratique comme SQLite convient tr s bien pour ce r le SQLite est efficace en lecture il est permissif et manipule des bases embarqu es ce qui vous vitera de reconfigurer une base de donn es chaque fois que vous d placerez votre application Mise en cache haut niveau via serveur proxy L utilisation d un outil comme Squid peut tre envisag e pour g rer la mise en cache de vos pages statiques Dans ce cas le contr le de la mise en cache se fait via les hea ders des pages Contr le du cache par le header self_stat stat __FILE__ date_upd gmdate D d M Y H i s self_stat mtime cachectrl Cache Control must revalidate cachectrl max age 3600 s maxage 0 private header Last Modified date_upd GMT header cachectrl Mise en cache plusieurs niveaux Les performances de vos applications seront optimis es gr ce la mise en place d une strat gie de cache plusieurs niveaux Tel qu illustr sur la figure 14 20 nous pouvons diviser les diff rents types de mise en cache en trois e Le cache d opcodes op r au niveau le plus bas maintient en m moire le code PHP compil
516. s donn es et de l autre des pointeurs qui assurent les rela tions entre les donn es 280 Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Des documents XML aux objets Utilit Plusieurs outils permettent de transformer des documents XML sp cifiques en objets SOAP XML RPC et WDDX entre autres Cr er des objets partir de documents XML a beaucoup d applications pratiques L id e g n rale est de cr er partir dun flux XML des entit s compatibles avec le syst me d information de l application ou de l infrastructure r ceptrice Figure 11 20 Du document XML l objet Configuration SOAP Transformation p Snel Objet m tier xml valu DOM SimpleXML A DN Conteneur de donn es WDDX P OOO Le format XML permet de stocker des donn es aussi complexes soient elles De la simple transmission de donn es un syst me de g n ration de code complet tout est permis Outils existants Les outils suivants sont disponibles au sein de la plate forme PHP et effectuent des transformations de documents XML en objets Tableau 11 9 Outils existants pour passer des documents XML aux objets Outil WDDX SOAP XML RPC DOM SimpleXML Description Permet de s rialiser et d s rialiser des don n es SOAP et XML RPC sont des protocoles de service web bas s sur le format XML Ces outils sont des parseurs qui transfor ment un flux XML en une succession d objets
517. s et les donn es manipul es Ces mots doivent tre intuitifs et en rapport direct avec la fonctionnalit ou la donn e repr sent e L utilisation d abr viations est une bonne chose dans la mesure o elles sont faciles comprendre L utilisation de DB pour database ou ID pour identifier est accep table L utilisation de cont pour content est moins vidente saisir Les noms courts sont plus agr ables manipuler que les noms longs compos s de plusieurs mots Choix de la casse Donner la casse une signification am liore la lecture du code et fait gagner du temps Vous saurez par exemple du premier coup d il quelles propri t s se cachent derri re une variable contenu typage port e etc sans prendre la peine de par courir le code pour le d couvrir Le tableau suivant donne des exemples typiques de choix de casses issues de prati ques courantes vous de compl ter ces conventions comme vous le souhaitez Tableau 2 4 D duction de propri t s en fonction de la casse choisie Mot cl Commentaire d duit de la casse creditcard_date_expire Contient une valeur qui semble tre la date d expiration d une carte de cr dit bankAccount Une instance de la classe BankAccount classe d finie certainement plus haut BankAccount TYPE Constante de la classe BankAccount repr sentant un type de compte BANK_AGENCY Un code repr sentant un contenu agence d fini dans une constante get_account Une fonct
518. s mati res EE Impl mentations possibles inner een ee nt tes fase 282 Des tableaux aux documents XML 283 Dire nor sois tonne La ar ae ete se AE T 283 Qufidsexistants Le A E re ee LR Rae En eee ee 283 Impl mentations possibles ses den en A A RTE RS ES 284 CHAPITRE 12 Assurer la qualit d un d veloppement PHP 285 R flexes simples d optimisation 286 M nager lutilisation de la m moire sis ah en nent 286 MOTEUR AN RSR NS AN nn NL EAP Er E 286 Passage par valeur ou par Ternes ne nb Ds rs Nes 287 Exploiter les m canismes de m moire partag e 288 Maitriserda T CUPSLUITE SRE EN nn D en ee An ee 290 M nager l utilisation des ressources 2 450 nuit ban ile 291 criture sur H ROS SR EN Re PAR APN ARR 291 Utilisation des expressions r guli res smart eee 293 Utilisation de la bande passante a n nunnana nanana 294 Utilisation des boucles 295 Manipulation correcte des cha nes de caract res 297 Autres trucs et astuces en VTAC rss res sree ere see sresue 298 Exploiter lesexceptions nets itooo aa E ON Ea Ko arak AEEA 300 D bopu erettester iera oiri g aA TE A A EOE ia en 301 D bogage d applications PHP hist nent d is ae nest ta 301 D boguer avec un outil personnalis Enr diner ete 302 Un lien qui ouvre l diteur sur le bon fichier la bonne ligne
519. s sont respectivement des variables et des fonctions de classe e La port e des attributs et des m thodes priv prot g publique d finit les restrictions d acc s voir chapitre 11 Les relations e Une relation d h ritage indique que la classe 1 h rite des attributs et des m thodes priv s et prot g s de la classe 2 voir chapitre 11 e Une association est li e un verbe voir figure 8 11 par exemple le verbe dite entre les classes editeur et livre Les num ros associ s indiquent la multiplicit un diteur peut diter 1 plusieurs livre s 1 mais un livre ne peut tre dit que par un diteur 1 e Une agr gation indique que la classe 1 contient la classe 4 e Une composition est une agr gation plus forte si un objet 1 est d truit alors les objets 5 correspondants le sont aussi 192 Mod lisation en UML pour PHP DEUXI ME PARTIE Figure 8 11 Un exemple simple Editeur os i d association Nous savons maintenant l essentiel sur le diagramme de classes et pouvons commencer le r diger N oublions pas de le diviser en paquetages s il est trop volumineux EXEMPLE PRATIQUE Un de diagramme de classes du projet UNANYM is assigned to est assign Developper Q Application firstname packup 1 name lastname type role empaquette descriptor mail version manage g re
520. sage Array C id gt 2 time gt 23 17 23 message gt Deuxi me message Assurer la qualit d un d veloppement PHP 23 CHAPITRE 12 Utilisation des expressions r guli res Probl me de l utilisation syst matique Les expressions r guli res sont tr s pratiques Elles permettent de manipuler les cha nes de caract res de mani re tr s ing nieuse En revanche ceux qui savent bien ne ere l s en servir ont du mal s en passer et oublient qu il existe de nombreuses fonctions en PHP qui pourraient s y substituer Une expression r guli re est analys e dig r e et ex cut e par un sous syst me qui bien que fiable n gale pas les performances des petites fonctions natives Prenez le temps de conna tre ce que peuvent faire les fonctions de manipulation de cha nes de caract res cela vous vitera de syst matiser l utilisation de ereg ereg_ replace preg_replace etc Utilisation excessive des expressions r guli res Expression r guli re lent echo ereg_replace A A 1 php 1 __ FILE Fonction native rapide echo basename __FILE__ php Optimiser une expression r guli re Le premier choix faire sera celui de la fonction qui analysera votre expression Il existe deux cat gories de fonctions les POSIX ereg eregi ereg_replace eregi_replace split spliti et les PCRE preg_grep preg_quote preg_match preg_match_all preg_replace preg_rep
521. semble des informations dont l application de d ploiement a besoin les d pendances les composants les fichiers extraire les chemins etc Automatismes mis en place Pour des raisons pratiques certains automatismes seront mis en place L op ration de gt packaging que nous venons de voir peut tre inscrite dans ces automatismes Sous Unix le syst me standard d ordonnancement des t ches est cron 2 Le but est de soulager ladministrateur des op rations manuelles redondantes en mettant un place un syst me qui effectue ces t ches automatiquement Ces auto mates effectuent des v rifications sur l environnement d ex cution des sauvegardes des nettoyages de base de donn es des r initialisations et plein d autres op rations selon les besoins Certains d entre eux concernent l quipe de d veloppement PHP Par exemple une t che planifi e peut rapatrier les logs de production contenant les erreurs mises au cours de la navigation des utilisateurs Ces logs seront ainsi analys s par l quipe de d veloppement Ou encore une autre t che planifi e effectue un nettoyage r gulier de la base de don n es La cr ation de nouvelles tables n cessite une modification de ce script en colla boration avec l administrateur syst me Caract ristiques d exploitation Ces caract ristiques concernent les quelques changements qui s op rent entre l envi ronnement de d veloppement et l environ
522. sibilit s de 18 ressources 160 simplicit 6 souplesse 7 268 syntaxique 11 statistiques d utilisation 10 support 7 utilisateurs 3 version 388 version 5 27 388 PHP5 fonctionnalit s objet 205 PHP Formatter 147 Php Palm Database 142 php MVC framework 155 PhpCheckStyle 146 phpdoc brouiller 324 PHPDocumentor 142 327 Es installation 327 phpfrance 12 PHP GTK pr sentation 16 phpize 347 PhpLdapAdmin 142 PhpMyAdmin 139 PhpPgAdmin 140 PhpSysInfo 138 420 phpteam 12 PHPUnit 35 319 Phrame framework 155 Pierre de Geyer Cyril 12 pile des fichiers fonctions 300 plan de collaboration 51 planning de livraisons 50 PNG compression 295 point de d rivation 62 points faibles de PHP par G rald Cro s 444 par Zeev Suraski 441 pont motif 233 POO Programmation orient e objet particularit s et limites 205 performance 209 Popoon framework 155 port forward 409 r seau 407 POSIX regexp 293 PostgreSQL 164 choix 164 exemple d utilisation 164 PowerAMC 172 pprof2calltree 311 pprofp 310 Prado framework 156 pratiques de programmation XP 35 pr compilation configure 398 pression m thodes agiles 33 priv acc s d une classe 264 proc dure mettre en place 50 installation de l environnement 392 466 Best Practices PHP mise en place 50 planification 50 profiling 144 b n fices 309 d finition 146 profondeur d un objet 269 progressif compression 295 propri t collective 20
523. sieurs choses e Lib rez un maximum de m moire avant l appel de r cursivit e Privil giez les passages par r f rence des variables e Utilisez des variables statiques dans les fonctions r cursives autant que possible e Pr voyez le cas de la boucle sans fin Quelques exemples plus ou moins recommand s de r cursivit Je suis gourmand en ressources function rec_count value max 100 if value lt max history value rec_count value 1 max return history rec_count 1 1000 Je fais la m me chose mais je suis moins gourmand function rec_count value max 100 11 static history if value lt max history value rec_count value 1 max else return history rec_count 1 1000 Assurer la qualit d un d veloppement PHP 2 CHAPITRE 12 M nager l utilisation des ressources Tout ordinateur poss de ses limites commencer par la charge admissible par le ou les micro processeur s Viennent ensuite la taille des disques la vitesse des bus du r seau et des p riph riques les caract ristiques de la configuration r seau et du ser veur dont PHP d pend Toute action a un co t Un simple echo peut provoquer un encha nement de plu sieurs milliers d instructions l mentaires notre chelle cela nous para t rapide mais il faut pr voir que ces actions s accumulent avec la complexit du code sa qua lit
524. sion du niveau de qualit de votre h bergement et de vos applications Pr cisons que ce chapitre ne contient pas de recettes de cuisine et de descriptions d taill es de l installation et de la configuration d outils Pour cela les guides d ins tallation et de configuration fournis avec les utilitaires ne manquent pas Votre exp rience en programmation php cli ligne de commande et en administration syst me vous sera galement tr s utile pour monter un environnement sur mesure 406 D finition des exigences pour l exploitation QUATRI ME PARTIE Assurer la s curit de l environnement d ex cution Un environnement compl tement s curis n existe pas Mettre en place une strat gie de s curit est une question d quilibre entre L ensemble des maillons qui composent la cha ne de votre s curit votre niveau de s curit est celui du maillon le plus faible L id al est de pr voir des maillons de m me taille pour avoir un niveau de s curit homog ne en tout point Risques et contraintes un environnement trop rigide en terme de s curit serait difficile vivre pour un utilisateur Tout l art de votre strat gie sera d avoir un maximum de s curit et un maximum de transparence R F RENCE S curit applicative et s curit de l environnement Nous aborderons surtout dans ce chapitre les aspects s curit de l environnement d ex cution Des points de s curit a
525. sites fournissent m me une recette de cuisine du code pour exploiter la faille soi disant pour que les administrateurs syst me puissent mieux la comprendre ce stade m me les milliers de script kiddies qui tra nent sur Internet sont capables de d t riorer un syst me 4 Qu est ce qu un script kiddie Script kiddie est une expression courante dans le milieu de la s curit informatique pour d signer un hacker ayant peu d exp rience et se servant essentiellement de recettes de cuisine toutes faites pour agir Il existe en gros trois cat gories de hackers bidouilleurs qui ont des motivations tr s diff rentes d fi nuisance argent etc e Les hackers d butants ou script kiddies e Les hackers exp riment s et les crackers d plombeurs de logiciels qui eux savent programmer et ont suffisamment de connaissances pour cr er leur propres outils e Les hackers professionnels qui sont g n ralement de tr s bons informaticiens ayant plusieurs ann es d exp rience La motivation de ces derniers est essentiellement l app t du gain Ces failles sont de natures tr s diverses Il s agit g n ralement d erreurs d allocation ou d effets de bord qui induisent un comportement impr vu d un programme 4 Qu est ce qu un effet de bord Un effet de bord proprement parler effet secondaire est un dysfonctionnement d un tat non pr vu de l application par exemple un d
526. sponibilit s curit et maintenance an CHAPITRE 16 Figure 16 8 Page cr e par l utilitaire cacti graphs threshid settings Graphs gt Preview Mode Logged in as guest Logout Fliter by host None z Presets LestDey From 2005 06 09 0035 E To 2005 08 100035 13 lt lt Previuus Showing Rows 1 Lu 10 uf 44 Next gt gt nemo CPU Usage JA x nemo Luad Average 1 a 5 FT FF SSSSSS IS FERS i z sop g 0 0 12 00 12 00 nemo Ram Memory lisage i n mo Iraffic hme0 5 a 1p e e t p e e p t 1 fort 1 i r E a E R F amp s 5 La liste suivante vous donne quelques id es e monitoring des processus v rification de la pr sence du serveur HTTP et des d mons utiles 1dap etc analyse incr mentale des journaux logs e monitoring des ressources syst me charge uptime variations de la m moire nombre de processus qui tournent simultan ment e monitoring des disques taille des partitions montages e monitoring du r seau bande passante montages NFS pr sence des interfaces et des routes utiles ping des serveurs e monitoring de la s curit tat du scan des ports mouvements du syst me de fichiers v rification des droits des fichiers et des r pertoires e monitoring mat riel temp rature tat des ventilateurs des disques des contr leurs des processeurs et de la m moire ouverture du ch ssis
527. st string request if l request return false return this gt cacheDir md5 request cache Mise en cache du contenu data correspondant la requ te request public function put request data fileName this gt getFi leName request return file_put_contents fileName data Assurer des d veloppements PHP performants et polyvalents EJ CHAPITRE 14 Retrait du contenu data correspondant la requ te request ou false si n existe pas public function get request fileName this gt getFileName request return file_get_contents fileName Nettoie le cache Si pas de requ te nettoie tout public function clear request null if Srequest unlink this gt getFileName request else dir opendir this gt cacheDir if dir return false while file readdir dir false if Ceregi A 0 9A 7Z cache file unlink this gt cacheDir file closedir dir return true gt Pour tester cette classe cr ez un fichier cache php avec le code suivant et lancez des requ tes du type http lt votre_url gt cache php r cle amp d valeur lt php include CacheManager php cache new CacheManager if _GET L r if _GET d cache gt put _GET r _GET d l else echo cache gt get _GET r else cache gt clearO gt En Bonnes pratiques
528. st parfois utile de pr voir de la place pour un infranet qui sera compos d outils de gestion de projets et d interfaces d administration Il existe en PHP de nombreuses applications gratuites ou commerciales r pondant ces besoins Nous aborderons les aspects intranet plus loin dans ce chapitre Construire un environnement sur mesure Architecture de l environnement Avant de se lancer dans la mise en place d un environnement il est utile de se poser des questions Le but de ces r flexions pr liminaires sur l architecture est de s assurer que l environnement qui sera mis en place r ponde bien aux besoins des d veloppe ments g rer Avant tout rappelons la devise faire simple et volutif L environnement d ex cution de d veloppement est de loin le plus complexe car non seulement il simule l environnement de production mais il h berge de nombreux outils d aide au d ve loppement de maintenance du syst me et des applications L art de ne pas en faire une usine gaz sera appr ciable Voici les tapes que nous pouvons adopter pour d terminer notre architecture de d veloppement 1 d terminer les besoins 2 s lectionner les outils 3 valuer les interactions entre les diff rents outils 4 passer lacte EUX Organisation du projet conventions et outils PREMI RE PARTIE D terminer les besoins Faites une liste des besoins qui seront les v tres pour vos propres d velop
529. ste autant de fichiers de cache que d associations donn es template diff rentes ce qui peut repr senter un nombre consid rable de fichiers Par exemple pour un template qui repr sente le gabarit d un sommaire de livre il y aura autant de mises en cache de sommaire que de livres disponibles Simplifier et p renniser un d veloppement PHP Figure 13 5 Compilation de templates et mise en cache Donn es D Template compil CA Cache activ y G n rer la page Lire la page en cache RS Envoyer les donn es non non Choix d un moteur compilateur de templates en cache Template 5 Compiler le template Ga et mettre CHAPITRE 13 ES Templates Templates compil s Ld LEE EE Cache de Traitement d un appel un moteur compilateur de templates tel que Smarty Le choix du moteur compilateur de templates d pend de ce que vous voulez faire Il existe un bon nombre de moteurs Parmi eux Smarty est r put pour sa fiabilit et ses performances Nous l aborderons plus loin dans ce chapitre Quelques crit res consid rer dans le choix de votre moteur de templates Quels types de donn es voulez vous cr er HTML PDF XML ou format sp cifique il y en a pour tous les go ts EJ Bonnes pratiques de d veloppement en PHP TROISI ME PA
530. sure Un moteur de cache minimal est facile r aliser Son principe est toujours bas sur la m me logique d crite sur la figure 14 19 La mise en cache peut faire intervenir plusieurs niveaux par exemple la mise en cache de produits r cup r s via un service web premi re couche permettant d viter de solliciter des requ tes SOAP redondantes et la mise en cache des pages HTML seconde couche Nous reviendrons sur ce concept un peu plus loin dans ce chapitre EUX Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE EXEMPLE PRATIQUE Une classe de cache minimale Voici une classe de mise en cache bas e sur l algorithme de la figure 14 19 Elle com porte trois m thodes publiques put pour mettre une donn e en cache get pour r cup rer une donn e et clear pour nettoyer les donn es qui sont en cache CacheManager php lt php class CacheManager R pertoire de stockage du cache private cacheDir Initialisation du r pertoire de stockage des fichiers de cache public function __construct cacheDir null if l cacheDir this gt cacheDir dirname __FILE__ cache elseif is_dir cacheDir this gt cacheDir cacheDir else die R pertoire de cache inexistant if is_dir this gt cacheDir die Le dossier cache n existe pas Construit le nom du fichier de cache partir de la requ te private function getFileName amp request reque
531. t Mise en cache de constantes pour les variables voir au chapitre 12 const array NAME gt Guillaume AGE gt 26 apc_define_constants mes_constantes const R cup ration des constantes mettre dans un autre fichier apc_load_constants mes_constantes echo NAME AGE Affichage d informations sur la m moire allou e par APC print_r apc_sma_info Effacement complet du cache apc_clear_cache QUATRI ME PARTIE D finition des exigences pour l exploitation Si l environnement d ex cution n est pas une priorit pour la plupart des pro jets PHP sa ma trise est indispensable pour supporter la charge des applica tions professionnelles et assurer une s curit optimale Dans ces chapitres nous apprendrons non seulement param trer un envi ronnement d ex cution mais galement synchroniser les travaux d exploita tion et de d veloppement 15 L environnement d ex cution a y est Votre application fonctionne la version stable est fig e il est temps de passer la phase d exploitation ce stade il ne vous reste plus qu effectuer une installation en production Nous avons vu au chapitre 4 comment installer et exploiter un environnement d ex cu tion pour les d veloppements Nous allons d couvrir maintenant la composition d un environnement d ex cution pour la production ainsi que les bonnes pratiques observer
532. t d une association 191 MVC mod le vue contr leur 39 architecture type 40 contr leur 40 41 frontal 43 en pratique 40 viter les redondances 43 exploitation de l erreur 404 42 mod le 40 41 vue 40 41 MySQL 162 choix 163 exemple d utilisation 163 N Nagios 420 nommage r gles 58 O o organization LD AP 177 obj structure C 299 objet 264 appel limitation 213 assemblage 269 464 Best Practices PHP bonnes pratiques 270 classe diff rence 189 composition 264 contr le 267 convention d criture 271 d finition 264 volutif 270 volution agile 267 fig 270 it ration sur 209 mauvaises pratiques 271 m moire partag e 289 passage en param tre 273 performance 209 265 268 persistant acc l ration 210 profondeur 268 simplifier la cr ation 222 sp cificit 268 transformation depuis tableau 281 transformation depuis XML 280 vers tableau 277 vers XML 274 visibilit 272 objet m tier 266 270 d finition MVC 42 identification 190 observateur motif 243 ODBC BD abstraction 168 OMG Object Management Group 200 opcode 268 cache m moire 376 mise en cache 375 principe de la mise en cache 375 Open Source quipe 46 OpenLDAP 141 OpenOffice XML 174 open relay securit 412 op rateur 265 de r solution de port e 210 optimisation r flexes 286 optimiseur utiliser PHP avec 392 Oracle 164 caract ristiques 164 choix 165 organisation d
533. t r parties sur des n uds Un n ud principal li au serveur HTTP Apache s occupe de g rer la r partition de charge Zad balancing entre les n uds Serveur PHP noeud Serveur Zend noeud principal Intelligence Serveur PHP noeud Configuration du cluster Figure 17 7 R partition de charge et int gration Zend Studio Exploiter un environnement d ex cution cl en main 43 CHAPITRE 17 l heure o ces lignes sont crites un nouveau module complet vient de para tre pour partager les sessions entre les n uds Il est possible de stocker les sessions en fichier ou en base et de mettre en place plusieurs solutions de synchronisation des sessions sur chaque n ud De cette fa on un visiteur peut changer de n ud dans sa session au cas o son n ud d origine est trop charg Une solution Zend Exclusive Il est difficile d installer d autres outils que ceux de Zend lorsque la Zend Platform est en place C est un point que nous trouvons un peu regrettable Par exemple si vous tes habitu travailler avec Xdebug il ne sera pas possible de le garder avec la Zend Platform Comme nous l avons vu galement la Zend Platform n a pas beaucoup de concur rents l heure actuelle ce qui ne l emp che pas d tre un bel outil I manque peut tre la version open source d un environnement d ex cution Installation param trage de la Zend Platform Avant d
534. t de positif 451 q PP pp ue vous a apport PHP par rapport d autres technologies 451 PP Par rapp g Quelles sont selon vous les qualit s requises pour tre un bon d veloppeur PHP 452 Bibliographie sen aeae raea a ea er adresne Peano EEA HETEN EHE 453 PHP est il adapt a vos besoins La popularit de PHP ne cesse d augmenter depuis plus de 10 ans Sa souplesse et sa grande simplicit d utilisation s duisent un tr s grand nombre de d veloppeurs En revanche exploiter l tendue de ses possibilit s n cessite au m me titre que n importe quelle plate forme de d veloppement compl te de bonnes connaissances th oriques Aujourd hui de nombreux succ s voient le jour dans des projets professionnels r a lis s avec PHP La plate forme s av re de plus en plus fiable et performante ce gr ce aux contributions d une communaut de d veloppeurs tr s active qui grandit de jour en jour PHP est principalement utilis pour r aliser des applications web mais il permet aussi de d velopper des applications en ligne de commande ou avec des interfaces graphiques dites clients lourds GTK Apr s la lecture de ce chapitre vous aurez une bonne connaissance du panorama PHP actuel Nous aborderons entre autres les garanties d un investissement dans PHP les points forts et les points faibles de la plate forme ainsi qu une vision d ensemble des acti vit s qui existent autour de PHP
535. t me avec PHP Il est possible d utiliser une application PHP telle que PHPSysinfo ou Cacti pr sent e au chapitre 16 pour surveiller et g rer un serveur Un bon nombre de scripts adapt s sont disponibles sur Internet Le lien suivant en est un exemple gt http www hotscripts com PHP Scripts_and_Programs Server Management index html Information Syst me guillaume Mozilla Firefox Eile Edt View Go Bookmarks Tools Help amp 9 O A 0 hu locahost phpsysnto loco Nom h te cannemique iP Version du noyau Distro Name Type ufs local ufs local seft updates Information Syst me guillaume 127 0 9 1 FreeBSD 5 4 STABLE 4 Mon Jun 13 19 28 rreuso 4 heures 13 minutes 7 0 17 0 13 0 08 Envoi 3 51 Mo 0 08 ko 9 09 Ko 47 81 Ko R ception 30 20 Mo 0 00 ko 9 09 Ko 47 81 ko Utilisation Jdev adosia ldev a40sih guillaume 127 0 0 1 Processeurs 1 Imtel R Pentium R M processor 1500MH2 1499 MHz a0p0 intel 82855 host to AGP bridge p b1 ACPI PCI PCI bridge nvidia0 Geforce FX Go5200 uhd Intel 8280108 ICH4 USB controller USB A uhai Intel 8280108 1C 4 USB controller USB 8 vhez Intel 8280108 ICH4 USB controller USB C pobz ACPI PCI PCI bridge bfe Broadcom BCM4401 Fast Ethernet lt bb0 TI4516 PCI CardBus Bridge moh00 1394 Open Host Controller Interface tabo PCI ISA bridge Map60 Intel 1CHA UDMA100 controller pemo intel ICHA 0280108 240 SAMSUN
536. t 1099 try InitialContext ctx new InitialContext env Object obj ctx lookup ejb HelloWorld PortableRemoteObject rmi new PortableRemoteObjectO HelloWorldHome home CHelloWorldHome rmi narrow obj HelloWorldHome class HelloWorld helloworld home create System out printin helloWorld hello catch Exception e e printStackTrace 42 D finition des exigences pour l exploitation QUATRI ME PARTIE Compilez votre classe d marrez le serveur d applications JBoss et appelez la m thode HelloTest java hellopackage HelloTest Hello world La classe de test quivalente en PHP est la suivante envt Array java naming factory initial gt org jnp interfaces NamingContextFactory java naming factory url pkgs gt org jboss naming org jnp interfaces java naming provider url gt jnp localhost 1099 ctx new Java javax naming InitialContext envt var_dump ctx echo n obj ctx gt 1lookup ejb HelloWord rmi new Java javax rmi PortableRemoteObject home rmi gt narrow obj new Java homepackage Hel1oWordHome helloBean home gt create echo helloBean gt hel lo R partition de charge et clustering La mise en place et la gestion de n uds est relativement facile Le produit est encore jeune mais il m rit grand vitesse Le principe du clustering de la Zend Platform est le suivant les applications son
537. t XML en un format diff rent travers une feuille de styles XSL Les outils de manipulation XML tels que SimpleXML DOM ou SAX sont d crits au chapitre 11 dans la section Documents XML LDAP LDAP est un protocole introduit pour r pondre des besoins de stockage et de mise disposition d annuaires Il peut s agir typiquement d un annuaire d entreprise con tenant des personnes physiques des personnes morales et des ressources r seau Organisation des donn es avec LDAP LDAP est tr s pratique pour centraliser les acc s de nombreuses applications Vos d veloppements PHP peuvent galement devenir compatibles LDAP gr ce aux fonctions disponibles avec PHP et l extension LDAP L organisation des donn es dans LDAP est hi rarchique L exemple de la figure 7 11 d crit une hi rarchie type pour une utilisation li e Internet Organisation du projet conventions et outils PREMI RE PARTIE Figure 7 41 a Eee LDAP organisation des a Serveur Authentification ISu donn es et connecteurs seen DNS Apache do domaine 5 w dc eyrolles x H ji cn manager gt ou authors ou links ji cn guillaume gt dc www s cn cyril dc intranet Serveur de mails i cn eric H de rss Gestionnaire de F listes i Cette hi rarchie permet de stocker des informations sur les auteurs de la librairie Eyrolles et les sous domaines du site ey
538. t d un tel investissement pour le d veloppement et l h bergement de vos applications D finition des exigences pour l exploitation QUATRI ME PARTIE La Zend Platform comme environnement pour la production l heure actuelle il existe un seul environnement d ex cution cl en main destin aux professionnels la Zend Platform Il s agit d un produit commercial r alis et distribu par la soci t Zend Technologies La Zend Platform permet de g rer un environnement d ex cution PHP complet compos d un ou plusieurs serveur s travers une interface unique et intuitive Les principales fonctionnalit s propos es par la solution sont les suivantes e la gestion compl te de la configuration de l environnement et de ses serveurs Apache PHP e la mise en place et la gestion d un cluster h bergement sur plusieurs serveurs diff rents e un monitoring mettant en uvre une d tection avanc e des probl mes en interac tion avec un outil de d veloppement Zend Studio et un syst me de restauration en cas de crash e une gestion des performances compos e d outils d optimisation cache d opco des de mise en cache personnalis e et d analyse e une int gration native avec Java par l interm diaire d un pont compatible avec les versions 4 et 5 de PHP CULTURE Qui est Zend Technologies Aux pr mices du succ s de PHP et en compagnie de Rasmus Lerdorf son inventeur deux d veloppeu
539. t les droits seraient d finis plus finement Par exemple avec ce syst me vous pouvez d cider que le serveur HTTP ait acc s uniquement aux fichiers utiles de vos sites et en lecture seule Ainsi un hacker qui arrive rait p n trer le syst me par cet interm diaire aurait un pouvoir de nuisance restreint Le r le du pare feu Sans pare feu un serveur reli Internet est toujours vuln rable Les figures 16 1 et 16 2 illustrent l int r t de mettre en place un tel outil devant l environnement d ex cution Pour acc der aux pages web d une application PHP il est n cessaire d avoir au minimum une machine reli e Internet donc ayant une adresse IP et un programme appel serveur HTTP HyperText Transfer Protocol qui tourne en permanence pour r pondre aux requ tes des utilisateurs Ce serveur ainsi que de nombreux autres du m me type utilisant d autres protocoles est li un port une sorte de porte d entr e pour communiquer avec l ext rieur D finition des exigences pour l exploitation QUATRI ME PARTIE Figure 16 1 Sans pare feu tout le monde a acc s tous les services reli s aux ports Figure 16 2 Contr le de l acc s aux services d mons avec le pare feu echanges gt 10000 postgresqle 5432 mysqle 3306 nfs 2049 rsync 873 https 443 Idap 389 irc 194 imap 143 ntp horloge 123 news 119 sftp 115 pope 110 httpe 80 smtp 25 sshe 22
540. t n cessaire est d j appr ciable La mise en pratique de cette approche offre une flexibilit surprenante et permet de respecter la pratique du rythme durable d crite un peu plus loin dans cette section D finition red finition r guli re du projet L approche XP consid re qu il n est pas utile de passer plus de temps qu il n en faut aux sp cifications initiales L exp rience montre que les besoins et les fonctionnalit s voluent r guli rement pendant la r alisation du projet Afin de maintenir un quilibre entre les d veloppements et l volution des besoins les clients fournissent r guli rement les fonctionnalit s int grer l application et d cident de l ordre dans lequel elles seront impl ment es Les d veloppeurs fournissent en retour des estimations de co ts pour ces nouvelles fonctionnalit s et se chargent d en tenir compte dans leurs travaux Figure 2 5 Un cycle de red finition des fonctionnalit s Client D finit les fonctionnalit s Client S lectionne les fonctionnalit s D veloppeur D veloppeur Impl mente les fonctionnalit s Estime les co ts Autres pratiques importantes Ces pratiques sont non seulement utiles mais fortement recommand es dans le cadre d un d veloppement XP d application PHP Nous y ferons d ailleurs r f rence dans la suite de cet ouvrage e Le client sur site on site customer whole team consis
541. t pendant la r alisation Elles privil gient l adaptation la pr diction e Elles sont parfaitement adapt es la vitesse de d veloppement in gal e qu offre la plate forme PHP Une m thode est dite agile si elle privil gie e la communication et l interaction entre les intervenants e l volution des comp tences et l implication r guli re des ressources de quipe projet e l adaptation au changement de pr f rence au suivi d un plan e les livraisons fr quentes de fonctionnalit s r elles Il existe aujourd hui une dizaine de m thodes agiles La plus populaire d entre elles s appelle eXtreme Programming mais vous pouvez en choisir une autre si les caract ristiques de votre projet et de votre quipe s y pr tent e Adaptative Software Development ASD e Feature Driven Development FDD e Crystal Clear e Dynamic Software Development Method DSDM e Rapid Application Development RAD D finir des conventions pour la conception d applications PHP ERI CHAPITRE 2 e Scrum eXtreme Programming XP Rational Unified Process RUP Vous pouvez consulter la description de la plupart de ces m thodes sur Internet Les m thodes agiles d crites sur l encyclop die Wikipedia sont disponibles partir du lien suivant gt http frwikipedia org wiki M C3 A9thode_agile Les 5 valeurs essentielles des m thodes agiles La communication et l interaction La communication et l inte
542. tFrame codejanitor framework 154 feedback m thodes agiles 33 fiabilit administration 136 file fonction 291 file_put_contents 291 final 265 270 Firebird 166 flood 412 causes possibles 412 pr vention 412 fonction formatage 54 native 213 prototype 54 taille 54 format ini 279 de donn es 173 formatage conventions 54 rendre plus lisible 55 framework agile 158 apports 152 choix 151 153 construction 157 contraintes 152 g n rique 152 liste des existants 153 sp cialis 152 utilit 152 FreeForm framework 154 front ends avec PHP 18 G g n rateur de code mod lisation 198 de documentation 326 principe 327 g n ration de code 360 exemple d application 361 exemple d autog n ration 361 interaction multi plates formes 366 limites et dangers 368 possibilit s 360 tests unitaires 366 types de g n ration 360 utilit 360 g n ricit 218 d un objet 268 G rald Cro s 443 gestion des erreurs php ini 390 GGF framework 154 gif compression 295 GNU formatage 56 Gpfr framework 155 graphiste 48 grid technologie 164 guillemets magiques php ini 391 H Horde framework 155 HTTP serveur 383 httpd conf emplacement 399 installation de PHP 404 humilit m thodes agiles 33 I iCalendar 142 ignore_repeated_errors php ini 391 IIS 386 implicit_flush php ini 390 incident applicatif 417 centralisation 417 gestion 417 liste 409 monitoring 416 rapport 416 syst me 417 t
543. t_contents this gt tempConfigFile my_config Test du chargement de notre classe Elle doit charger le fichier de configuration et retourner une bonne valeur sur l appel de la m thode getValue function testLoadConfig config new ConfigManager this gt tempConfigFi le this gt assertTrue config gt getValue key2 3 The configuration is not loaded unset config Test des m thodes d ajout et d enregistrement function testAddValue config new ConfigManager this gt tempConfigFile this gt assertTrue config gt add key3 Guillaume Add operation failed this gt assertTrue config gt save Save operation failed newConfig new ConfigManager this gt tempConfigFile this gt assertTrue newConfig gt getValue key3 Guillaume The added value is not detected unset config unset newConfig Cette fonction est appel e la fin de tous les tests Nous en profitons pour nettoyer le fichier de configuration temporaire cr au d but function tearDown unlink this gt tempConfigFile Lancement des tests unitaires pour un affichage dans le navigateur test new TestOfConfigManager test gt run new HtmlReporter gt Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE ce stade le lancement de ce test dans le navigateur renvoie une erreur car notre classe ConfigManager n existe pas en
544. tamment ins pir e de l ouvrage suivant Gestion de projet eXtreme Programming de J L B nard L Bossavit R Medina D Williams aux ditions Eyrolles Organisation d une quipe XP Une repr sentation visuelle des r les et responsabilit s d une quipe XP est illustr e sur la figure 2 4 Chaque membre d une quipe peut poss der un ou plusieurs r les Chaque responsabilit est galement li e une ou plusieurs pratiques e sp cifications fonctionnelles red finition du projet client sur site e tests de recette e conception tests unitaires programmation en bin me remaniement e planification rythme durable livraisons fr quentes planification it rative D finir des conventions pour la conception d applications PHP ES CHAPITRE 2 Figure 2 4 QO coordonne R les et responsabilit s d une N r dige gt Sp cifications aide quipe XP A1 vaie d finit SNR Client value Coach ici participe y Tests de recette O __ code lance Q AA d finit a e Code PHP Code l Testeur participe Conception D veloppeur participe suit 4 ici a K z N participe Planification __ S informe Manager Tracker Aper u des pratiques de programmation propos es par XP Les 4 lois du pilotage d applications par les tests 1 Les tests sont automatis s Ils doivent tre int gr s une routine de tests globale L utilisation d un utilitaire de la famill
545. te int grer le client l quipe de d veloppement Il apporte ses comp tences m tier et d finit les tests de recette r guliers du produit MVC D finir des conventions pour la conception d applications PHP 39 CHAPITRE 2 Le rythme durable sustainable pace quipe adopte un rythme de travail raison nable afin de produire un travail de qualit sur une longue dur e e Les livraisons fr quentes frequent releases par l adoption d un rythme soutenu et r gulier de livraisons et ce d s le d but du projet e La planification it rative planning game client et quipe de d veloppement pla nifient des rencontres r guli res de suivi de projet AVIS D EXPERT Perrick Penet La plupart des technologies web sont mergentes et l eXtreme Programming s y adapte parfaitement contrairement aux m thodes traditionnelles qui ont tendance figer une architecture d s le d but XP me permet d tre transparent avec mes clients et d adapter en permanence des d veloppements fiables et rapides leurs besoins Cette efficacit est rendue possible gr ce l application rigoureuse du rythme durable de la planification it rative des livraisons fr quentes des tests du remaniement et de l ensemble des pratiques propos es sans exception C est d ailleurs en cela que la m thode est extr me et c est cette condition qu elle porte ses fruits conception id ale M thode XP adaptive M thode C
546. teindre Cette tape est n cessaire pour optimiser les workflows les flux d informa tion du projet mais elle n est pas suffisante pour que la mise en uvre d un environ nement collaboratif efficace s instaure L exp rience et la bonne volont des membres du projet en particulier de ceux qui ont un r le de manager seront d terminantes Vous trouverez sur la figure 2 14 un exemple de strat gie de collaboration entre membres d un m me projet repr sent par un sch ma Nous y retrouvons les princi paux r les tenus par les membres d un projet de taille moyenne Ea Organisation du projet conventions et outils PREMI RE PARTIE Figure 2 14 o Exemple d quipe de projet Exemple de strat gie na PA de collaboration USE y collabore avec N UT informe reste l coute de informe U u Chef de projet Client Informe 1 reste l coute de audite A et collabore avec 5 1 Architecte h S gt Q 3 audite r audite Responsable d exploitation YYYY Tracker Informe fie supervise Y g Coach Coach A 1 S informe S informe J U u rahi U Designer Testeur SSPORSANS D veloppeurs Int grateur technique sa Pp g Chef de service ORGANISATION Sp cificit s d un projet PHP L architecture de l application est importante mais elle ne suffit absolument pas assurer la p rennit et les performances de la solution Le r le du responsable technique intervient a
547. tem echo LINE TRACEFILE awk print 2 1 3 gt gt REPORT_FILE done cat REPORT_FILE sort r awk BEGIN print lt apdtrace gt printf lt check gt n printf lt time gt 4 2f lt time gt n 1 printf lt file gt s lt file gt n 2 printf lt tracefile gt s lt tracefile gt n 3 printf lt check gt n END print lt apdtrace gt gt REPORT_FILE_XML Ce script cr e deux fichiers un fichier texte contenant le temps d ex cution de chaque requ te et un fichier XML contenant la m me chose tri par temps d ex cu tion Assurer la qualit d un d veloppement PHP E CHAPITRE 12 Fichier 20050729_report xml lt apdtrace gt lt check gt lt time gt 0 10 lt time gt lt file gt web workspace code recursive php lt file gt lt tracefile gt pprof 01771 1 lt tracefile gt lt check gt lt check gt lt time gt 0 00 lt time gt lt file gt web workspace code boucle php lt file gt lt tracefile gt pprof 01786 1 lt tracefile gt lt check gt lt apdtrace gt Enfin les traces APD peuvent tre converties en traces KCacheGrind par l interm diaire de l ex cutable pprof2calltree Convertir les traces APD en KCacheGrind pprof2calltree f pprof 01786 1 Writing kcachegrind compatible output to cachegrind out pprof 01786 1 R F RENCE George Schlossnagle auteur de APD Vous retrouverez des informations sur APD dans l ouvrage de Georg
548. ter aux volutions qui lui seront demand es dans lavenir Nous pr senterons dans ce chapitre quelques prati ques adopter pour rendre l architecture de votre application volutive ER Mod lisation en UML pour PHP DEUXI ME PARTIE Pratiques de mod lisation agile Qu est ce que la mod lisation agile La mod lisation agile que nous allons juste effleurer ici fait suite aux m thodes agiles vues au chapitre 2 Ses r gles d crivent un certain nombre de comportements adopter dans le cadre de votre mod lisation R F RENCE La mod lisation agile en ligne Le site suivant est d di la mod lisation agile Vous y trouverez non seulement l ensemble des informa tions qui sont explicit es ici en anglais mais galement de nombreuses ressources principes et prati ques utiles pour am liorer votre mod lisation dans un environnement agile gt http www agilemodeling com Mod lisation agile pour PHP Cette section met en avant quelques pratiques essentielles de mod lisation agile Chacune d elles fait l objet d une explication et d une introduction de mise en pra tique Ces quelques conseils vous aideront mieux organiser et animer vos d mar ches r guli res de mod lisation Participation active des d positaires Les d positaires sont l ensemble des personnes habilit es prendre des d cisions sur la nature et la priorit des t ches effectuer en fonction de l volution des
549. ter les points forts de PHP les m ta structures CHAPITRE 11 Figure 11 16 PT ion d i PDFMaker Gestion a 3 res p une classe qui g n re du PDF et contient une m thode addProduct que soient se SE Product classe abstraite g n rale repr sentant un produit gt TravelProduct gt BookProduct classe sp cifique repr sentant classe sp cifique repr sentant Noo un produit de voyage No un produit de type livre Respecter des conventions d criture Elles ne sont pas obligatoires mais permettent de conna tre les propri t s d un mot cl en un coup d il Voici un exemple rapide e this gt _productContent est un attribut de classe priv ou prot g caract ris par la pr sence du caract re de soulignement underscore _ e this gt productContent est un attribut de classe public e product_content est une variable qui n est pas un attribut de classe productManager est une instance de la classe ProductManager Utilisez les m thodes magiques Elles garantissent davantage de s curit de performance et de souplesse Les m thodes magiques sont v nementielles elles sont sollicit es lorsqu une m thode ou une propri t appel e n existe pas ou lorsqu un objet est clon s rialis d s ria lis ou doit tre affich etc Plusieurs exemples d utilisation des m thodes magiques ainsi que leur description sont disponibles au chap
550. ti re d uvre de l environnement c est dire des applications et des personnes auxquelles il faudra rendre service 2 tablir une liste des outils et fonctionnalit s que l environnement devra g rer d p t de donn es h bergement HTTP interpr teur PHP routines de sauve garde firewall etc 3 Choisir le syst me et d tailler sa configuration taille des partitions installation minimale configuration du noyau etc 4 Choisir les outils reporter dans une liste Pour chaque outil d tailler le type d installation choisi compil binaire installeur et les configurations possibles 5 Imaginer votre environnement dans 1 2 5 10 ans vous en d duirez ce qui devra voluer Modifiez les estimations pr c dentes en cons quence Mettre en place l environnement d ex cution pour le d veloppement EUR CHAPITRE 4 6 Choisir le mat riel il doit tre fiable m me s il co te un peu plus cher que la moyenne Veillez galement ce que votre configuration mat rielle soit simple Les serveurs n aiment pas la multiplication des p riph riques 7 Installer consciencieusement en prenant le temps de lire les documentations n cessaires Pr cipitation nest pas synonyme de rapidit Un environnement au service des quipes projet L environnement de d veloppement est au service des quipes projet Son objectif est de leur simplifier la t che et de proposer des solutions de collaboration et de travail Il e
551. tive la lecture et l criture en m moire Comme nous l avons vu dans la section qui concerne la m moire partag e certaines fonctions permettent de lire et d crire en m moire C est le cas par exemple des fonctions shmop APC et de l extension du SGBD SQLite ER Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE La lecture et l criture en m moire sont plus rapides que sur disque En revanche la taille de la m moire est beaucoup plus limit e Si vous d passez la capacit de la m moire RAM soit la m moire swap extension de la RAM sur le disque prend le relais soit votre script est arr t pour manque de ressources Une base SQLite en m moire Cr ation d une nouvelle base dans la m moire db new SQLiteDatabase memory Cr ation d une table et insertion de valeurs db gt query BEGIN CREATE TABLE log id INTEGER PRIMARY KEY time TIME message VARCHAR 100 INSERT INTO log time message VALUES date H i s Premier message INSERT INTO log time message VALUES date H i s Deuxi me message COMMIT Ex cution d une requ te SELECT result db gt query SELECT FROM log while result gt validO print_r result gt current SQLITE_ASSOC result gt nextO D connexion facultatif unset db R sultat du script pr c dent Array C id gt 1 time gt 23 17 23 message gt Premier mes
552. tr leur goezcsesosecosesoscoessosessoossososseecsststosdsses esssesecosesis sesece osessesescecesesesssscsoecsssesscseso coesssoocesesoseoseseseosos i c s H FrontControler ConfigManager HostManager ResolvManager NetworkSubject WebSubject SecuritySubject pe Figure 8 16 Distinguer des motifs de conception dans un diagramme de classes de conception ConfigControler AppControler HimWue LogManager AppManager Observateur GtkVue NetworkObserver WebObserver SecurityObserver Analyse technique dynamique Le diagramme de s quence Le diagramme de s quence d crit un sc nario d un point de vue algorithme Les l ments qui entrent en jeu entit s contr les dialogues sont align s sur la largeur Le diagramme se lit de haut en bas Les appels entre les l ments se dessinent avec des fl ches qui partent de la ligne de vie d un l ment celle d un autre Le diagramme d activit s Le diagramme d activit s est un diagramme de flux repr sentant une navigation un processus ou un algorithme Concr tement il peut repr senter les tapes de naviga tion d un moteur de r servation ou d un achat effectu sur une boutique en ligne La figure 8 18 illustre les symboles de base utilis s pour le diagramme d activit s ainsi que leur signification Mod lisation en UML pour PHP DEUXI ME PARTIE Figure 8 17 L
553. ts Utilit Ce passage du format tableau au format objet se voit rarement Cependant il est utile pour transformer des donn es plates en objets entit s ou pour construire des objets dynamiquement Figure 11 21 Configuration Du tableau l objet Tableau Transformation p Objet Objet m tier classe Script sp cifique Classe g n r e 0o00 Outils existants l heure actuelle il mexiste pas d extension ou de fonction permettant de g n rer des objets partir de tableaux Cette op ration est rare et effectu e uniquement dans des cas bien pr cis Un exemple vulgaris d impl mentation est disponible dans la section suivante ER Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Impl mentations possibles Voici un exemple minimal d impl mentation permettant de transformer en classe un tableau format selon des r gles bien pr cises Ce genre d algorithme peut servir construire des objets la vol e dans le cadre d un protocole sp cifique de g n ration de code Une fonction minimale qui transforme un tableau sp cifique en classe Cette fonction transforme un tableau en classe function array2class tab class class tab class_name foreach tabl attrs AS attr gt content class content scope fattr if isset content value class content value class foreach tab methods A
554. ts sur des plates formes tr s diff rentes peut devenir judicieux Organisation du projet conventions et outils PREMI RE PARTIE L environnement de votre syst me d exploitation peut avoir des r percussions sur le comportement de vos applications PHP e des r percussions sur les variables d environnement que vous pouvez visualiser gr ce la fonction phpinfoO e des r percussions sur le comportement des fonctions sensibles aux param tres r gionaux et aux jeux de caract res support s par le syst me e des r percussions sur le comportement des fonctions sp cifiques certains syst mes fonctions COM sous Windows ou POSIX sous Unix sAvOR Param tres r gionaux sous Unix Sous un syst me Unix les param tres r gionaux et le jeu de caract res par d faut sont d finis dans les locales syst me que vous pouvez visualiser en tapant la commande locale a Les valeurs de ces locales sont d finies dans les fichiers de configuration de votre syst me Consultez la documentation pour savoir comment modifier ces param tres La configuration des extensions Comme nous l avons vu pr c demment la configuration des extensions est parfois g r e ind pendamment de la configuration de PHP Les r percussions de ces confi gurations sur le comportement de votre application PHP peuvent tre plus ou moins sensibles en fonction de vos objectifs e Si votre application a vocation d tre portable effectuer d
555. tuent les op rations suivantes e t l chargement des sources du serveur HTTP e d compactage des sources e lancement du configure avec les param tres de pr compilation e compilation et installation Les param tres de compilation des extensions Seule l utilisation vraiment sp cifique d une extension requiert une compilation sur mesure Il existe deux cat gories d extensions e Les extensions autonomes qui sont d clar es avec le pr fixe enable lors de tape de pr compilation configure e Les extensions faisant appel des programmes ext rieurs qui sont d clar es avec le pr fixe wi th lors de l tape de pr compilation Par exemple l ex cution de configure enable wddx fonctionnera tous les coups tandis que l ex cution de configure with xs1 chouera si vous n avez pas au pr alablement install la librairie xs1 non incluse dans les codes source de PHP Les programmes requis avant la compilation de PHP doivent tre install s avec leurs fichiers d en t te headers pour que l tape de pr compilation configure se d roule sans erreur Afin de disposer des fichiers d ent te ou headers vous devez installer les paquetages suffix s par devel dev ou headers de votre distribution Linux ou BSD ex libxs1 devel Apr s l installation Une fois les programmes install s et compil s vient l tape de postconfiguration De nombreux services et d mons disposent d un fichie
556. u d veloppement conventions et proc dures 45 organization LDAP 177 ou organization unit LDAP 177 outil d administration 136 outils d dition pour la maintenance 30 output_buffering php ini 390 Ovrimos SQL 166 P Paamayim Nekudotayim 210 packaging des applications 393 pair programming 37 domaines d expertise 37 paquetage cas d utilisation 188 pare feu mat riel 409 r le 407 passage valeur r f rence 287 performance 288 patron de m thode motif 245 PCRE regexp 293 PDO BD abstraction 167 principe 168 PEAR 158 formatage 55 installation d un composant 159 ligne de commandes 159 nommage des versions 62 packaging 393 PECL PHP Extension Community Library 151 346 cr er une extension 346 pecl_gen 350 performance administration 136 rapport de 147 Perrick Penet 446 avis d expert 39 person LDAP 176 PHP 2 aborder le langage 13 adaptation aux d butants 6 annuaires de scripts 160 apports pour la productivit 6 caract ristiques principales 2 cluster utilisation en 21 comme moteur de templates 340 compilation 401 exemple pratique 402 module dynamique 401 statique 403 configuration 389 d erreur 391 de la plate forme 387 d finition 2 d veloppeurs de 4 quipes 4 esprit 5 volutions de la plate forme 27 facilit d utilisation 440 garanties d utilisation 7 interop rabilit 14 module dynamique 388 compilation 401 objet pratique de 212 points faibles 441 politique d volution 5 pos
557. ude footer php pr c dente suivante 17 645 Les r sultats des tests Les tests unitaires avec SimpleTest ou PHPUnit peuvent tre lanc s en ligne de commande ou via HTTP Dans les deux cas il est possible de lancer une routine glo bale permettant de mettre en place un rapport par exemple toutes les nuits dans le nightly build routine de maintenance nocturne vue au chapitre 4 Choisir les ressources et les supports de donn es Nous allons nous int resser ici au choix des outils logiciels intimement li s PHP extensions fonctionnalit s int gr es Ce choix est vaste Ce chapitre doit vous aider avoir une vision d ensemble de ce qui existe et conna tre les meilleurs outils du moment Dans un premier temps nous allons nous int resser aux extensions en langage C Elles permettent de compl ter PHP avec de nouvelles fonctionnalit s performantes et rapides Puis nous aborderons la notion de framework de d veloppement ou cadre de travail dans sa traduction fran aise Le framework est une couche logicielle ind pendante qui fournit des ressources partag es aux applications La plate forme PHP poss de une collection importante d applications et de scripts gratuits d velopp es par une communaut active de d veloppeurs Certains travaux ont su s imposer comme r f rences et peuvent rendre de fiers services votre envi ronnement et vos applications Nous apprendrons ici conna tre trouver
558. udicieux de s imposer certaines r gles qui vous feront gagner du temps car elles vous emp cheront de tomber dans le pi ge des erreurs d tourderies Voici quelques exemples d erreurs courantes que vous pouvez plus ou moins contr ler en choisissant une syntaxe adapt e e Letest suivant if var true retournera toujours vrai car est un op rateur affectation et non de comparaison comme 2 caract res gal concat n s Si vous souhaitez minimiser le risque de reproduire cette erreur il existe plusieurs solutions Organisation du projet conventions et outils PREMI RE PARTIE e Lorsque vous comparez une variable une valeur vous pouvez mettre la valeur avant if true var Cette solution n est pas tr s agr able prati quer et lire mais elle renvoie une erreur vitez de faire une affectation et un test en m me temps Par exemple prenez l habitude d crire fd fopen if fd au lieu de if fd fopen e Connaissez et utilisez les fonctions de test que vous pr f rerez aux op rateurs isset is_array is_numeric in_array La liste de ces fonctions est disponible sur la documentation officielle de PHP http www php net manual fr ref var php e Il est possible de se passer des d limiteurs de blocs et des boucles et des struc tures de contr le lorsque le corps de celles ci ne sont compos es que d une ins truction
559. udio et le framework NET Figure 14 11 Une solution permettant d laborer un front end PHP d une application Java Serveur SOAP en JAVA AXIS FLUX SOAP Client SOAP en PHP Extension SOAP Assurer des d veloppements PHP performants et polyvalents EX CHAPITRE 14 Par exemple la figure 14 11 montre comment mettre en uvre une solution de front end en PHP pour une application Java Il nous faut pour cela un service web simple d velopp par exemple en Java Axis qui sur l appel dune m thode getProductDetail renvoie le d tail d un produit de voyage Le client PHP permet ensuite d obtenir le d tail d un produit en seulement deux lignes Appel d un service web SOAP en PHP d claration du client appel du document wsdl client new SoapClient http server travel wsd1l Appel de la fonctionnalit d sir e response client gt getProductDetai1 349 OuTIL Comment g n rer automatiquement un serveur SOAP en PHP UML2PHPS5 est un des rares outils permettant de g n rer du code PHP 5 partir d un diagramme UML En plus d tre gratuit il g re aussi la cr ation de documents WSDL et d un serveur en PHP par l interm daire du st r otype lt lt SOAP gt gt mentionner dans les classes concern es Pour en savoir plus sur cet outil tr s pratique vous pouvez consulter le chapitre 8 et vous rendre l adresse suivante gt http uml2php5 zpmag com REST
560. uence d activit s ou de collaboration UML2PHP5 UML2PHPS est un plug in de l application Dia qui permet de dessiner des dia grammes UML sur le m me principe que Microsoft Visio Dia fonctionne sous Unix et Windows Figure 8 22 LEE zioz Conversion d un LS 5 5 m diagramme de classes en PHP avec UML2PHP5 uet_foru_fielus 0 fremiesr agenda_requesr AgendaRequesr PET k rasa 2rentagends 1ten Agendart en Supdave_itentayenda_ iten Avendalteu From fdeler e_irem 14 yat anEries UML CLASSES EKTENDED fconstrueticype apenda Tu PHPS HtimlAgenda tgat_torm Hehek_forn X Annuler P valide tdisplay_al1t i T Hdisplay month t lay we Bi Je Zoomi 70 7 xl LI Jagram made La figure 8 22 est une copie d cran sous Windows de P diteur Dia et de Poutil de conversion vers PHP 5 travers le plug in UML2PHP5 L avantage d UML2PHP5 outre sa gratuit est d tre tr s complet et enti rement compatible avec la version 5 de PHP Les classes leurs attributs et visibilit s ainsi les relations entre les diff rentes briques sont prises en compte et r percut es dans le code g n r Ce plug in permet galement de g n rer des services web complets clients et ser veurs ainsi que le document WSDL correspondant Une documentation pratique illustr e de nombreux exemples est disponible sur le site officiel du plug in gt http uml2php5 zpmag com
561. ues dans les fichiers mp3 e mail format sp cifique des messages e mail ma lparse e PDF un format portable pour documents bureautique e XML une syntaxe de structuration des donn es utilis e par de nombreux for mats et protocoles Interfaces de d bogage La pratique du d bogage que nous traiterons dans le chapitre 12 est utile et m me n cessaire pour assurer des d veloppements fiables et performants La plupart de ces outils g n rent des traces d erreurs qui peuvent tre exploit es pour un affichage C est le cas par exemple d APD Advanced PHP Debugger et de Xdebug L id al est de pouvoir visualiser les traces de d bogage avec un outil tr s visuel et interactif comme KCacheGrind que nous aborderons plus loin dans ce chapitre Ces fichiers de trace g n r s par les d bogueurs peuvent e faire l objet d un affichage dans un Intranet e tre exploit s avec des outils comme KCacheGrind visible sur la figure 6 6 e ou encore tre exploit s par certains diteurs PHPEd PHP Edit etc Limites du d bogage sans outil ad quat L utilisation r guli re d outils de d bogage permet de ma triser de nombreux points parmi lesquels e La pile des actions qui sont r alis es chaque tape du d roulement de vos scripts classes fonctions et fichiers parcourus La plupart des d bogueurs affichent cette pile en cas d erreur e L utilisation de la m moire par chaque requ te ut
562. ument charte de d veloppement Voici une id e de plan que vous pouvez reprendre e R gles de collaboration planification des rencontres et d finition des r les afin que chaque acteur puisse identifier ses interlocuteurs potentiels criture du code source conventions d criture mises en place pour le projet e Connaissance de l architecture un manuel de prise en main de l architecture glo bale d une application complexe destin voluer en fonction des besoins e Respect des proc dures d finition des proc dures observer pour le bon d rou lement du projet e Utilisation des outils liste des outils choisis pour le projet Chaque outil peut tre accompagn d une courte explication pour une prise en main rapide RETENR Conseils pour la r daction de votre charte Soyez optimiste et simple Il ne faut pas oublier que les personnes en charge des d veloppements n aiment pas les interdits et ne supporteraient pas de retenir une liste gigantesque de r gles et de con traintes e Mettre en avant les bonnes conduites est plus pr cis plus court et plus agr able qu noncer les mau vaises pratiques e Hi rarchisez ordonnez filtrez courtez et mettez en valeur l information utile afin de s y retrouver du premier coup d il e Limitez vous Les contraintes en abondance emp chent la cr ativit et le g nie de se d velopper Coachez votre quipe L apprentissage par lexemple et la prati
563. un mod le devient difficile un autre mod le pourrait certainement le remplacer pour d crire la m me fonctionnalit Il ne faut alors pas h siter en changer It rer sur les mod les apporte des r flexions nouvelles sur le fonctionnement d une application aborde sa logique sous un angle nouveau et assure sa ma trise globale Prouvez le par le code Un mod le est une abstraction Seul le code qui en r sultera permettra de prouver qu il fonctionne N oubliez pas que vous tes dans une logique it rative et que les tra vaux de mod lisation suivis de l impl mentation puis des tests seront mis jour et remani s la prochaine it ration Choisir le support le plus simple La simplicit est garante de maintenabilit Sachant que vos mod les sont simples et ne portent que sur l it ration courante ils peuvent ais ment tre crits la main Le tableau blanc est le support id al pour l laboration collective du mod le L utili sation d une application sp cialis e dans la cr ation de mod les est pr conis e si et seulement si elle apporte un avantage cons quent Elle peut par exemple accompa gner l impl mentation avec un g n rateur de code Utiliser les outils les plus simples Les mod les peuvent pour la plupart tre labor s sur un tableau blanc ou du papier Pour archiver le mod le vous pouvez prendre une photo num rique ou le transcrire sur un support crit Les diagrammes sont le plus souv
564. un peu plus loin lorsque nous aborderons les d tails du motif MVC que la vue est souvent compos e de templates de squelettes ou mod les permettant de g n rer en sor tie du HTML du PDF ou tout autre format correspondant ce dont vous avez besoin Le contr leur fait le lien entre l utilisateur et l application C est lui que sont adress es les requ tes de l utilisateur et c est lui de faire appel la vue et au mod le de mani re ce que ces requ tes soient satisfaites MVC en pratique La figure 2 7 illustre une architecture type bas e sur le motif MVC Le parcours d une requ te est repr sent par un fl chage accompagn d tapes num rot s d crites dans le tableau 2 1 Figure 2 7 Une architecture MVC O 4 pour un projet PHP Services CONTROLEUR 4 DB Manager Contr leur Frontal B I de Logger Lt AA gt Terah tale 9 y Moteur Compilateur _ j Pad gt Adionn FRS Lai de Templates PHP Unit L j Action 2 NON u li Action 1 T 4 l o gt Tomplate2 He Objets Metiers I MODELE X y Templaten ja Utilisateurs amp Groupes m TS i Mod io2 mm SEa freis lt O mes DAON S soa i Ce a Fonctionnalit s Si gt DAO1 a l o 80 D finir des conventions pour la conception d applications PHP a CHAPITRE 2 Le mod le Il est charg des acc s aux donn es et des traitements li s
565. ur cette cat gorie de syst mes dans nos exemples En revanche si vous choisissez Microsoft Windows ou Mac OS ces principes s appliquent galement M me sil est pr conis de choisir un syst me Unix pour l h bergement partag d applications PHP il convient de pr voir que pour des rai sons de s curit et de r activit il vaut mieux choisir POS le mieux ma tris par l quipe d exploitation la compilation La compilation n est pas n cessaire mais elle permet d obtenir des ex cutables sur mesure pour vos applications critiques Cette m thode permet galement des mises jour aussi fr quentes que souhait es et le retrait des limites dues au param trage par d faut des applications pr compil es paquetages ports Reportez vous au chapitre 15 pour en savoir plus sur la compilation des applications Les param tres de compilation de PHP Il est recommand pour des raisons de commodit en environnement de d veloppe ment de compiler PHP comme module dynamique de votre serveur HTTP Ceci permet d viter d avoir recompiler ce dernier pour prendre en compte les modifica tions des param tres de compilation de PHP Ces derniers sont fournis par l ex cutable configure disponible dans le r pertoire de base du code source de PHP Pour cela il suffit de taper la commande suivante Visualiser la liste des options de compilation de PHP configure help Les tapes minimales d une compilati
566. ur la production la tra abilit des tests pour la recette le d bogage pour le d veloppement ou un autre besoin pour du packaging etc Application Exemple de g n rations barit 3 possibles suivant les crit res gavar r g n ration du g n rateur a 4 G n rateur J Y i Y Application Application Application Application optimis e pour la optimis e pour la optimis e pour la optimis e pour le production production recette tests de d veloppement langue fran aise langue anglaise r gression d bogage Y Y Application Application packag e pour le client n 23 avec ses packag e pour la version de options et les modules qu il a achet s d monstration Dans tout type de g n rateur il est important de pr voir ce qui d clenchera le pro cessus Dans le cas de la figure 14 14 les versions de notre application peuvent pour la plupart tre g n r es manuellement ou des p riodes d termin es La version de d bogage en revanche doit faire l objet d une g n ration partielle des parties modifi es afin de maintenir le confort de d veloppement que permet PHP Sans cela il faudrait g n rer la main chaque modification ce qui serait fastidieux Assurer des d veloppements PHP performants et polyvalents 363 CHAPITRE 14 La r g n ration automatique partielle Cette op ration de r g n ration automatique est d crite sur la figure 14 15 so
567. ur les photos du PNG dans d autres situa tions Compressez si possible en progressif Ilen est de m me videmment pour vos vid os et gros fichiers e Retirez tous les commentaires Ils ne concernent pas vos visiteurs seulement vous lors du d bogage qui n a jamais lieu en environnement de production e Utilisez des liens complets france aquitaine plut t que france aquita ne Pour g n raliser vitez d obliger votre serveur HTTP effectuer des aller retours et des op rations suppl mentaires Ma triser les envois Si possible envoyez toutes vos donn es d un coup de mani re viter de faire durer les connexions entre le client et le serveur Les envois morcel s peuvent prendre au final davantage de temps Utiliser des outils de compression En PHP vous pouvez compresser vos pages HTML en r duisant les blancs et en retirant les caract res inutiles gr ce la biblioth que tidy Vous trouverez davantage d informations sur cette extension l adresse suivante gt http www php net manual fr ref tidy php Avec Apache vous pouvez utiliser le module mod_gzip pour compresser le contenu entre le serveur et le client Les op rations de compression d compression sont g n ralement efficaces et aujourd hui les navigateurs acceptent en grande majorit les donn es compress es Utilisation des boucles Les boucles for foreach while etc sont un des principaux acteurs de l encombre ment des
568. ur mesure Installation en module statique PHP peut tre compil en module statique pour Apache 1 x Les compilations de PHP et Apache pour une installation en module statique sont similaires En revanche les options de pr compilation et l ordre des op rations vont changer Voici un r sum du d roulement des op rations e Nous allons d abord compiler Apache sans PHP ce qui est n cessaire la compi lation du module PHP pour Apache e Puis nous allons compiler PHP en g n rant le module statique dans les sources d Apache e Enfin nous allons recompiler Apache avec le a prise en charge de PHP Compiler Apache sans PHP Cette op ration est exactement la m me que la compilation d Apache que nous avons d crite plus haut dans ce chapitre Reprenez la et passez la suite Compiler PHP en module statique pour Apache Pour cela il suffit de reprendre la compilation pr c dente de PHP en effectuant les op rations suivantes dans le fichier my_configure e V rifiez qu il ny a pas de ligne contenant with apxs qui servirait g n rer le module dynamique e Ajoutez une ligne with apache apache lt version gt pour la g n ration du module statique Vous voil maintenant en mesure de recompiler Apache avec le module statique de PHP Compiler Apache avec PHP ditez le fichier my_configure et ajoutez y simplement la directive suivante e activate module src modules php5 1ibphps
569. us forme d un diagramme de flux Ainsi le d veloppeur travaille sur l application gabarit et teste sur l application g n r e comme s il s agissait de la m me application Figure 14 15 Principe de la r g n ration d but g_include file php automatique partielle Y file php OUi chang Y non g n rer file php inclure file php 4 y Y fin Le principe de la fonction g_include est d effectuer ce test un peu particulier Cette fonction prend en charge la recherche du fichier inclure la g n ration de ce fichier s il a t modifi dans la version gabarit de l application et enfin l inclusion du fichier g n r Table de traduction Quelle diff rence y a t il entre les fichiers de la version gabarit et ceux des versions d bogage production recette etc Pour le d terminer c est vous de formaliser les crit res de g n ration Le premier crit re que nous avons d fini plus haut est celui du mot cl pr fix par g_ Tous ces mots cl s peuvent faire l objet d une traduction selon des r gles que vous aurez d finies dans une table 364 Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Tableau 14 2 Exemple de table de traduction pour deux versions Mot cl g_include x g debug x g_error x mysql_password Version d bogage Remplac par une fonction de r g n ration automatique Remplac p
570. us des pi ces de Mec cano afin de les embo ter avec les pi ces de Lego Vous vous rendriez vite compte qu force d tre remodel es pour des besoins sp cifi ques vos pi ces seraient de plus en plus difficiles r utiliser dans le cadre de nou velles constructions La bonne solution Une deuxi me solution consiste n utiliser que des pi ces de Lego ou de Meccano qui seront le format standard pour toutes vos constructions Vos objets PHP doivent galement pouvoir collaborer sans leur apporter d adapta tion sp cifique Nous allons voir par la suite comment y arriver 20 Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Bonnes pratiques de d veloppement des objets Travailler avec des objets m tier volutifs Un objet m tier s inscrit dans le cadre d un processus m tier Il peut tre e un produit un v hicule une personne morale etc objets entit s e un gestionnaire de statistiques un g n rateur de documents etc objets mettant en uvre des fonctionnalit s sp cifiques un processus m tier contr les et dialogues RETENIR Objets entit s contr les et dialogues Cette typologie des objets est officielle Elle est pr sent e au chapitre 8 dans la section Les diff rents types de classes Un objet m tier volutif veut dire qui peut s adapter et peut voluer contraire ment un o
571. usieurs serveurs sur Internet parfois des centaines voire des milliers et les configurer pour envoyer un tr s grand nombre de requ tes vers la victime Par exemple envoyer de tr s nombreux courriers lectroni ques en continu vers un serveur de courrier lectronique jusqu ce qu il tombe Causes possibles Le flood a g n ralement lieu suite l intervention ext rieure d une ou plusieurs per sonne s malveillante s Il est possible qu il fasse l objet d un relais Par exemple si vous param trez votre serveur de courrier lectronique en open relay relais ouvert vous relayez les messages de tout le monde vous risquez non seule ment de vous faire flooder par tous les hackers qui remarquent une bonne adresse pour faire circuler du spam mais galement de vous faire b acklister par de nombreux autres serveurs de messagerie 4 Qu est ce qu une blacklist liste noire La blacklist d signe un fichier ou une base de donn es o sont r pertori s de mauvais utilisateurs ou de mauvaises adresses Par exemple si votre serveur de messagerie est blacklist par le serveur SMTP qui sert de relais vos envois vous ne pourrez plus envoyer de courrier Autre exemple un utilisateur black list sur un site Internet ne pourra plus se connecter ou aura des privil ges r duits Actions de pr vention Il est difficile de se pr munir contre les fooders si ce n est en configurant ses pro grammes avec
572. utant sera toujours limit par son manque de connais sances en informatique fondamentale et en g nie logiciel PHP est il adapt vos besoins EJ CHAPITRE 1 Sa souplesse Les possibilit s de remaniement et de mises jour sont faciles et rapides avec PHP contrairement des configurations fig es qui demandent un investissement et des manipulations lourdes pour accepter des changements PHP est dun point de vue utilisateur interpr t Il poss de un syst me de compila tion interne et transparent destin optimiser ses performances Quelles sont les garanties d utilisation de PHP PHP n a pas de support technique commercial En revanche il dispose d une alter native tr s efficace une communaut ouverte et r active de nombreux passionn s r partis travers le monde Cette communaut est l coute de tous les probl mes et de toutes les attentes des utilisateurs Si PHP 5 a su gagner son pari de combler les principaux reproches que l on faisait PHP 4 dans le monde professionnel c est gr ce la mobilisation de cette communaut de contributeurs juste titre les professionnels ont tendance ne pas faire confiance aux programmes Open Source pour leur manque de garanties contractuelles Mais il existe quelques applications d exception dans lesquelles on a naturellement confiance Le serveur HTTP Apache et PHP en font partie qui dois je m adresser en cas de probl me Cela
573. utives SAP mysqli SGBD Embarqu Exceptions Gestion avanc e des erreurs En connaissant bien les possibilit s offertes par les ressources disponibles Une ressource extension biblioth que est une fonctionnalit qui ne fait pas partie du noyau de PHP mais qui peut s int grer dynamiquement ou se compiler avec les sources de la plate forme Elles mettent disposition des fonctions constantes objets suppl mentaires permettant d acc der des fonctionnalit s nouvelles 28 Organisation du projet conventions et outils PREMI RE PARTIE Il existe 2 types de ressources en PHP e Les extensions crites en C qui sont r pertori es dans l annuaire PECL privil gient la vitesse d ex cution et apportent souvent PHP des fonctionnalit s issues de librairies C et C existantes e Les biblioth ques crites en PHP que l on retrouve entre autres dans le projet PEAR offrent des fonctionnalit s souples et faciles mettre en place dans un environnement d ex cution fig un h bergeur mutualis par exemple La biblioth que PEAR contient de nombreux composants utiles au d veloppement d applications Nous y reviendrons au chapitre 7 Le meilleur moyen d valuer la diversit des fonctionnalit s offertes par les exten sions et les biblioth ques est de se rendre sur la documentation et les annuaires en ligne gt http www php net manual fr gt http pecl php net
574. utres existent galement les d veloppeurs sous Emacs ou Xemacs se sont certainement int ress s un jour la raison pour laquelle l diteur Xemacs a vu le jour gt http www xemacs org About XEmacsVsGNUemacs html Figure 2 11 Exemple d organisation d un projet Open Source n 1 1000 quipe de projet project team VELEN Ensemble des contributeurs et testeurs du projet Les membres peuvent tre des programmeurs ou des utilisateurs assidus quipe de validation commiters Ensemble de programmeurs ayant droit de modification directe des sources qui uvre au projet en d veloppant et en int grant les contributions quipe noyau core team ce Prend les d cisions choisit et manage l quipe des commiters d finit les r gles M Utilisateurs 1 10 000 000 Donnent leur point de vue font vivre le produit et peuvent informer des bogues ventuels Organisation du projet conventions et outils PREMI RE PARTIE Des r les et des responsabilit s Nous nous int resserons ici aux caract ristiques d une quipe de projet d entreprise ou d association Le fonctionnement des quipes de projets Open Source a prouv son efficacit mais il est tr s diversifi et il faudrait un ouvrage complet pour en parler s rieusement Nous nous int resserons plus particuli rement aux sp cificit s d une quipe de projet web le d veloppement de
575. uvaise solution 2 269 La bonne Soltti rop irena eE dust OEA E aE E men nt 269 Bonnes pratiques de d veloppement des objets 270 Pratiques O bannit a CNET tn TN RS Nr A 271 Concevoir une biblioth que d objets homog nes 272 Utilisation avanc e des classes pour PHP 274 Passer d une m ta structure une autre 274 Des objets aux documents XML 5 22 08000 4 na pen 274 Gihte Nine Midas aere a e ae Cu eu 274 Outils eki stattS Lines hain anne a DE re ane D E a a 275 Impl mentations possibles ss NL sen Sr TEA 275 D s objets aux tableaux 4e te tin as een e 277 DRE as E dia ne ana 1 NN NE Rae a MEGA Puma 277 Outils existants se aies eee aa Rae a Ram pe boues 277 Impl mentations possibles assiste scmenecen tte fade 278 Des documents XML aux tableaux 278 Utilit a AR SN Ta R A DEN R RENAN SRE nan 278 Outils existants 2 Er da nine tr mer nd er ie at ue 279 Impl mentations possibles 8 st Leurs Set d outrn dr SA fera der 279 Des documents XML aux objets use nr nn Re ere 280 Utilit aate o EEE EEE ER RSR ER a a NA 280 Outils existants ne EE ends T eus ae a 280 Impl mentations possibles Se EE RS En RE ES aa 281 Destabledux au objets sus charente se upese mtotee ni e E AN 281 DR SR RS SR RE ARE en in 281 OS ERTA NIS ne ns en nee annee Re EAEE ses 281 Table de
576. uvez galement visualiser la pile dappels d un script sous forme d arbre comme ceci Extrait d une pile d appels C M main C web workspace code apd php 3 M apd_set_pprof_trace C web workspace code apd php 3 M include C web workspace code exceptions php 7 M Exception gt __construct C web workspace code exceptions php 7 M Exception gt getMessage C web workspace code exceptions php 12 M Exception gt __construct 2x C web workspace code exceptions php 26 M exceptionFunction C web workspace code exceptions php 49 M Exception gt _construct C web workspace code exceptions php 45 M TestException gt __construct C web workspace code exceptions php 115 M MyException gt __construct C web workspace code exceptions php 96 M MyException gt __construct EUX Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE L ex cutable pprofp poss de plusieurs options de sortie Vous l utiliserez facilement pour l int grer d autres routines comme une v rification nocturne Un script de reporting de traces apd personnaliser tracereport sh bin sh REPORT_FILE date Y m d _report txt REPORT_FILE_XML date Y m d _report xm l LIST rm f SREPORT_FILE 2 gt dev null rm f SREPORT_FILE_XML 2 gt dev null for TRACEFILE in ls pprof do TRC pprofp r TRACEFILE LINE echo TRC sed s ATrace for sed s Total Elapsed Time sed s Total Sys
577. uvrante on peut la noter comme ceci lt une_balise_sans_contenu gt RETENIR Une petite convention avant de continuer Pour simplifier la compr hension des concepts et outils abord s dans ce chapitre nous nous baserons sur le document de la figure 11 3 Concevoir et manipuler des documents XML avec PHP De nombreux outils sont disponibles en PHP pour manipuler des documents XML Nous pouvons les classer en deux types e Les outils de manipulation g n raux ils servent parser et manipuler nimporte quel document XML quelle que soit sa nature e Les outils de manipulation sp cifiques ils autorisent des manipulations avanc es sur des documents XML sp cifiques tels que SOAP ou WSDL pour les services web WDDX outil de s rialisation et bien d autres encore Le tableau 11 2 r capitule les principaux outils fournis par PHP pour manipuler du XML Ces outils sont galement d crits en d tail dans la suite de ce chapitre Tableau 11 2 Outils PHP pour manipuler du XML Outil Type Description avantages et inconv nients SAX G n ral SAX est un parseur qui s adapte tout type de documents XML Il ne permet que la lec ture d un document En revanche il est tr s permissif lit le XML de mani re s quen tielle et ne n cessite pas un chargement complet du document susceptible de bloquer l ex cution pendant un moment 258 Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Tableau 11 2 Out
578. uvrir le fichier et la ligne impact e par une erreur Rare sont les diteurs qui impl mentent cette fonction Il s agit d une fonctionnalit tr s pratique permettant de jouer sur la structure du code en quelques clics Par exemple s lectionner une partie de code et en faire une fonction consiste effectuer une op ration de remaniement voir chapitre 13 Pratiquer le remaniement Il permet d assister la cr ation des tests unitaires et de les lancer depuis l diteur Masque ou affiche les lignes de code situ es dans une structure fonction boucle classe etc par un simple clic sur un bouton de la marge de gauche g n ralement un pour afficher et un pour masquer La figure 5 1 est une copie d cran de l diteur Eclipse Nous y apercevons un explo rateur de fichiers qui int gre un client Subversion gauche un gestionnaire de t ches en bas un explorateur de classes droite une fonctionnalit compl tion sur phpdoc au centre et une organisation bas e sur un syst me d onglets et de multi fen trage Figure 5 1 Quelques fonctionnalit s du plug in PHP de l diteur Eclipse PHP kiap php Eclipse Platform x Ele Edt HTMLT r Source Navigate Search Projet Bun Bajano t 07 m e T Choisir un diteur 13 CHAPITRE 5 Un diteur adapt la taille et la nature des d veloppements Un diteur de texte simple ne sera pas forc ment adapt
579. ux php ini contient de nombreuses directives qui d terminent le comporte ment de PHP Nous l avons d j abord au chapitre 4 dans la section Les param tres utiles d un environnement d ex cution Nous ne pourrons pas d tailler ici l ensemble des directives du fichier n anmoins voici une s lection qui peut influencer directement la mani re dont vous allez d ve lopper vos applications php ini de la version 5 de PHP les valeurs soulign es sont recommand es celles en gras sont d finies par d faut Pour en savoir plus sur les directives de php ini une documentation compl te est disponible en ligne Quelques unes des explications ci dessous sont extraites de cette documentation gt http www php net manual fr ini php zend ze1_compatibility_mode Off On Activation ou non de la compatibilit avec le moteur Zend Engine 1 utilis par d faut avec PHP 4 Vous pouvez mettre sur On pour r duire l impact des modifica tions effectu es par PHP 5 sur vos applications PHP 4 En revanche les applications PHP 5 peuvent pr senter des dysfonctionnements D finition des exigences pour l exploitation QUATRI ME PARTIE output_buffering Off On lt taille_buffer gt Mise On cette directive envoie le header voir fonction header apr s le body via echo etc L activation de cette directive peut avoir un impact sur votre d bogage si vous utilisez des fonctions d affichage comme echo print etc
580. venue trop longue Une table difficile manipuler dans votre base de donn es Ou encore des redondances d tect es apr s coup Face ces situations un bon d veloppeur doit avoir le r flexe d effectuer les modifications n cessaires afin de pouvoir continuer avec un code source lisible et agr able manipuler Simplifier et p renniser un d veloppement PHP ER CHAPITRE 13 Figure 13 3 Le remaniement optimise i les performances i et la clart du code Deal refactoring gt Si vous ne savez pas encore ce qu est le remaniement vous l avez certainement pra tiqu un jour ou l autre Il s agit d une technique de restructuration d un code existant Il intervient sur lorga nisation interne du code mais n alt re en aucun cas le comportement l ex cution En d autres termes le remaniement n affecte pas l aspect ext rieur d un programme mais simplement la mani re dont il est crit RETENIR Motifs ou mod les de remaniement Tout comme les objets avec les motifs de conception ou design patterns il existe une liste de remanie ments l mentaires qu il peut tre int ressant de conna tre Il s agit d une compilation de remaniements fr quemment pratiqu s par de nombreux d veloppeurs Nous les pr senterons plus loin et vous en trouverez une liste compl te l adresse suivante gt http www refactoring com catalog index html Planifier le remanie
581. vestissement unique Une fois entre nos mains un v hicule n cessite essence et huile un contr le technique r gulier le paiement de la carte grise avec le risque y ajouter des amendes pour non respect du code de la route Les d butants ont trop souvent tendance n gliger ou minimiser l tape de main tenance d une application Tout comme une automobile un projet informatique quelle que soit sa taille n cessite une maintenance qu il faut pr voir avant toute con ception e La maintenance logicielle concerne les mises jour les corrections de bogues et tout ce qui n cessite de se replonger dans le code source e La maintenance des donn es concerne les actions de mises jour du contenu manipul par l application publications produits donn es statiques bases etc e La maintenance technique intervient dans l environnement d ex cution de lappli cation Cet environnement peut voluer en taille en complexit et en stabilit Maintenance logicielle de la rigueur avant tout PHP vous fait honneur en vous laissant le choix de vos outils et de vos r gles d cri ture Faites lui honneur en fixant les conventions n cessaires l homog n it de votre solution dans les domaines suivants e Les conventions d criture sont d finies au d part et doivent tre les m mes en tout point de votre programme Si vous travaillez en quipe il est recommand de d finir cette syntaxe par crit et de fa
582. vironnements individuels auxquels nous ajoutons les composants partag s essentiels la pratique du d veloppement PHP en quipe La plupart de ces outils sont les m mes quel que soit notre environnement de travail Les professionnels et les d veloppeurs Open Source mettent en place des m ca nismes similaires Figure 4 3 Un environnement d ex cution standard pour PHP en quipe Interpr teur D p t de PHP donn es Serveurs Unit de FTP SSH sauvegarde Serveur de fichiers Scripts de Intranet D mons maintenance Extranet DNS Syslog Serveur de d veloppement Mettre en place l environnement d ex cution pour le d veloppement ER CHAPITRE 4 Vous trouverez des exemples d outils de d veloppement sur les plates formes de d veloppement collaboratives comme sourceforge net ou php net Les outils partag s repr sent s sur le gros bloc central de la figure 4 3 assurent la pr sence d un environnement d ex cution pour les applications d outils de mainte nance sauvegardes synchronisations d outils d accompagnement du d veloppe ment tests intranet d bogueur etc et de serveurs utiles au partage des donn es FTP CVS etc Un environnement agile complet Cette solution s adresse ceux qui souhaitent mettre en place un sc nario de d ve loppement intensif bas sur les pratiques des m thodes agiles que nous avons abor d es au chapitre 2 Cet environnement est un peu plus l
583. vironnements d ex cution http cli etc a T a lt API Zend pour les extensions Assurer des d veloppements PHP performants et polyvalents REX CHAPITRE 14 Une extension C pour PHP peut tre autonome ou li e une application ind pen dante L extension wddx est autonome car elle ne requiert pas la pr sence d un pro gramme d j install pour tre compil e dans PHP En revanche l extension MySQL doit obligatoirement tre accompagn e du programme MySQL pour fonctionner Les extensions autonomes sont compil es avec le pr fixe enable et les extensions d pendantes d un programme externe sont compil es avec le pr fixe with dans les options du programme configure Comme nous pouvons le voir sur la figure 14 3 chaque extension dispose de trois groupes de ressources diff rentes celles du moteur Zend Engine celles du noyau de PHP et celles de la couche SAPI li e l environnement d ex cution Apache Caudium etc Exemple pratique de cr ation d une extension Nous allons cr er ici une extension minimale la main c est dire sans outil de g n ration afin de bien comprendre le principe Dans un premier temps nous pouvons cr er un dossier portant le nom de notre extension productmanagement Il nous faudra obligatoirement un environnement d ex cution PHP avec l ex cutable phpize que nous aborderons plus loin et les outils de compilation autoconf automake acloca
584. voir chou socket_close socket gt Une fois que ce client est disponible un clic sur la ligne Editer cette erreur avec emacs ouvre une nouvelle fen tre telle que nous pouvons le voir sur la figure 12 4 Figure 12 4 Mozilla Firefox R ponse du client sans le File Edit View Go Bookmarks Tools Help serveur apr s clic sur le lien amp DO A nv ochos z 0 co Connexion au serveur EMACS gt Veuillez d marrer le serveur emacs Il doit tre lanc sur l adresse 127 0 0 1 port 10000 Done Il ne nous reste plus qu d velopper le serveur tape 3 mise en place du serveur Le serveur devra tre lanc en permanence Il s agit d un script PHP en ligne de commande dont le code source minimal et sans gestion d erreurs est le suivant emacsserver php Code source du serveur emacsserver php usr local bin php q lt php ET Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Disponibilit permanente du serveur et affichage non bufferis des messages set_time_limit 0 ob_implicit_flushO Adresse et port sur lesquels le serveur est connect ip 127 0 0 1 port 10000 Connexion la socket sock socket_create AF_INET SOCK_STREAM SOL_TCP socket_bind sock ip port ret socket_listen sock 5 D marrage du serveur attente d un message contenant un chemin absolu vers un fichier et un num ro de li
585. voir davantage sur les objets m tier le chapitre 8 vous apprend comment les identifier dans la section Pour organiser la conception et le chapitre 9 vous explique comment les optimiser et les utiliser dans le cadre d un d veloppement PHP dans la section Favoriser l interop rabilit et la p rennit du mod le Utilisation avanc e des classes pour PHP Nous avons vu que les classes peuvent se manipuler comme des Lego Une fois que vous avez l habitude de les utiliser dans vos projets de nombreuses portes s ouvrent vous notamment celles de la mod lisation chapitres 8 et 9 et des motifs de concep tion chapitre 10 RETENIR Qu est ce qu un motif de conception design pattern Les motifs de conception ou design patterns sont n s d un constat les d veloppeurs habitu s la pro grammation objet se retrouvaient fr quemment avec les m mes types de probl mes et les m mes types d architectures pour r gler ces probl mes Il a alors t d cid de r pertorier ces petits assemblages d objets et de les tudier pour les optimiser et mieux les conna tre Le chapitre 10 de cet ouvrage est consacr aux motifs de conception Passer d une m ta structure une autre Afin d exploiter le meilleur de nos trois m ta structures il peut tre utile de pouvoir passer de l une l autre Nous allons aborder dans cette section les diff rentes possi bilit s de passage en mentionnant l
586. votre infrastructure e un gain de temps gr ce la ma trise de l infrastructure et aux outils d automatisa tion et d extraction d information Se d barrasser des t ches contraignantes Plus le temps s coule plus les d veloppements grossissent et n cessitent des atten tions particuli res Les t ches r p titives s accumulent et se complexifient Le tableau suivant vous donne quelques exemples de proc dures que vous pouvez automatiser un jour ou l autre Tableau 6 1 T ches automatisables pour l administration d applications PHP T che Description La sauvegarde Sauvegarde sur serveur s par ou sur support de vos donn es applicatives et de la configu ration de votre environnement La sauvegarde est de loin la t che la plus importante automatiser Le checkstyle Il consiste v rifier que les sources PHP ne comportent pas d incoh rences Le checkstyle peut tre automatis pour les d placements d un environnement l autre Le contr le de Il v rifie la sant du syst me serveurs applications utilisation des ressources etc tout l environnement moment Il existe des d mons et des applications mrtg snmp etc ainsi que des applica tions PHP phpsysinfo cacti etc qui permettent de faire ces v rifications sur vos serveurs La r plication Lorsque le maintien de l acc s une application est important et ou que vos d veloppe ments consomment beaucoup de ressources il peut tre int
587. votre m thode de d veloppement M THODE Construire un framework agile Les m thodes agiles que nous avons abord es au chapitre 2 proposent des pratiques de gestion de projet permettant d assurer des d veloppements fiables Si vous optez pour un d veloppement agile avec l eXtreme Programming ou une m thode de votre choix voici quelques conseils d usage e Commencez par une architecture minimaliste et assez souple pour voluer en fonction des besoins qui se pr senteront Par exemple la d finition de r gles de base et d une organisation permettant d h berger les premiers outils et les premi res ressources dont vous aurez besoin Ensuite tout cela pourra tre remani ou mis jour e Optez pour une division du d veloppement en briques simples e Faites intervenir tout moment vos clients ou collaborateurs d tenteurs des connaissances m tier M me si le framework est tr s technique il peut tre utile de ne pas se tromper lorsqu il s agit de cr er des modules manipulant des donn es m tier e D veloppez le framework plusieurs Vous prendriez un gros risque en laissant l exclusivit des con naissances du framework une seule personne e Int grez votre framework des tests unitaires et tests de r gression complets Enfin ces pratiques peuvent tre bonnes dans certains contextes mais pas en d veloppement agile e D finir une architecture d taill e avant tout d veloppement limite les possibilit s de rem
588. vous voulez cela peut se faire facilement avec PHP en ligne de commande Pr voyez juste d avoir les moyens de rattraper la main ce qui ne fonctionnera pas avec l application de packaging Figure 15 3 Application i Applications Le packaging PHP D ploiement en production d applications PHP 1 A C2 z g n ration de la icki R solution du conf apache Fichiers probl me copie des sources etc Comme le montre la figure 15 3 cette application se compose de plusieurs parties selon vos besoins e La partie construction fabrique une capsule partir des sources d une application e La partie v rification teste si la capsule est correcte pr sence des sources de la configuration du d ploiement et ventuellement simule un d ploiement D finition des exigences pour l exploitation QUATRI ME PARTIE e La partie d ploiement effectue l installation de l application dans l environne ment d ex cution ALLER PLUS LOIN Le descripteur de d ploiement Dans le monde Java J2EE ces op rations de packaging sont fr quentes Elles forment les fameux fichiers jar et ear destin s tre d ploy s sur des serveurs d applications tels que JBoss ou Bea Weblogic En PHP une mise en place de fichiers phar est l tude sur le m me principe Le descripteur de d ploiement ou POM Project Object Model de l application Maven est un fichier XML qui contient l en
589. x Ainsi deux versions d un m me fichier peuvent tre d velopp es en parall le Il est g n ralement d usage de cr er des branches sur un projet module entier plut t que sur un ou plusieurs fichiers La branche secondaire celle qui est cr e est com pl tement dissoci e de la branche principale souvent appel e HEAD Un export d une branche secondaire incompl te ne permettra d extraire qu un ensemble de fichiers concern s par la branche Quelques raisons pour lesquelles la cr ation d une branche est utile e La mise en place d une nouvelle version de l application peut bouleverser le con tenu de la plupart des fichiers Effectuer des travaux en parall le sur le d veloppe ment de la nouvelle version et la maintenance de l ancienne est rendu possible par la branche Un exemple typique est pr sent la fin du chapitre 2 e La n cessit d une version ou configuration sp ciale peut faire l objet d une cr a tion de branche par exemple passer d une application marque blanche une Installer et utiliser un gestionnaire de versions RES CHAPITRE 3 application d riv e pour un nouveau client En revanche deux possibilit s peu vent se pr senter La version sp ciale concerne l ensemble des fichiers de l application Dans ce cas il s agira de scinder l application en deux versions compl tement ind pen dantes La version sp ciale ne concerne que certains fichie
590. x d veloppeurs Il vous permettra de poser les jalons n cessaires la r ussite de votre entreprise Ce livre est fait pour vous si vous utilisez ou souhaitez utiliser PHP dans un cadre pro fessionnel Gr ce cet ouvrage les d veloppeurs web pourront franchir une tape et les informaticiens confirm s appr henderont mieux les bonnes pratiques avoir dans un contexte web Cyril Pierre de Geyer Co fondateur de l Association fran aise des utilisateurs de PHP Directeur technique d Anaska Remerciements crire un livre est une exp rience la fois enrichissante et difficile C est une occa sion unique de vivre sa passion et de la faire partager mais aussi un long travail de recherche d criture de lecture et de relecture continue qu il est difficile d entre prendre seul Je tiens remercier l ensemble des contributeurs de Best practices PHP pour le temps et l nergie qu ils ont consacr au projet En particulier Pour leurs contributions techniques et leur soutien Cyril Pierre de Geyer directeur technique d Anaska qui s est beaucoup investi malgr son emploi du temps charg Matthieu Mary expert PHP qui a t pr sent en permanence Perrick Penet et Patrice Pichereau qui ont consacr du temps sur les sujets sp cifiques qu ils ma trisent Pour leur confiance et la qualit de leur travail l quipe Eyrolles en particulier Muriel Shan Sei Fan sans qui ce projet n aurait pas vu
591. x_server php Une structure de type tableau peut galement tre un objet ou tout autre contenu my_tab 6451 Array name gt La gr ce price gt 699 S rialisation de la structure my_tab xml wddx_serialize_vars my_tab echo xml wddx_client php R cup ration des donn es xml file_get_contents http localhost wddx_server php D s rialisation d un flux WDDX et affichage du contenu print_r wddx_deserialize xml RETENIR Attention aux limites de WDDX l heure ou s crivent ces lignes WDDX fonctionne tr s bien avec les variables de types l mentaires ou tableaux En revanche il est un peu capricieux avec les objets Si vous voulez faire de la s rialisation effi cace avec les objets utilisez les fonctions serialize et unserialize qui seront l inverse parfai tement adapt es Assurer des d veloppements PHP performants et polyvalents ES CHAPITRE 14 Services web Principe et utilit Les services web r pondent un besoin d interop rabilit Ils ont mis du temps se stabiliser mais aujourd hui la solution est une r f rence pour les changes de donn es Une des utilisations les plus r pandues des services web consiste pour un op rateur donn mettre disposition une base de contenu sur Internet Ces contenus sont consultables par des clients agences op rateurs gds etc selon une politique d acc s personnalis e Figure 1
592. xec cmd result status this gt assertEqual status O Echec de la commande this gt assertIrue count result Aucun disque trouv foreach result AS value tdisk explode value this gt disks tdisk 0 Cint tdisk 1 N rification de la taille de chaque disque trouv function testDisksSpace this gt assertTrue this gt disks Pas de disque analyser if this gt disks return foreach this gt disks AS disk gt capacity message Disque disk plein capacity this gt assertTrue capacity lt 95 message L ex cution de ce test avec un formateur HTML donne le r sultat suivant DiskTester Fail testDisksSpace gt Disque space plein 97 at line 45 1 1 test cases complete 5 passes 1 fails and 0 exceptions Figure 16 7 Un test unitaire v rifiant l tat des disques D finition des exigences pour l exploitation QUATRI ME PARTIE Mettre en place le m canisme de surveillance Suite aux informations de la section pr c dente il nous manque l art et la mani re de monter des agents de surveillance Nous allons voir ici comment mettre en place des outils de surveillance pour l environnement d ex cution puis pour les applications PHP Surveillance du syst me des serveurs et du r seau Nous n irons pas jusqu d tailler une strat gie de surveillance pouss e r serv e aux ouvrage d administration syst m
593. xploitation 395 Installations avec compilation sur mesure 396 Pourquoi compiler sur mesure sueur ans es ait es 396 Compilation du serveur EP ete nn ds de abs Dut 396 R cup ration des sources et pr paration de la compilation 397 Compilati nefinstalation 08 dirt asia or a so a Pa A E EN 398 Configuration et lancement d Apache 399 Proc dure de mise jour 22 400 Compilation de PHP et de ses extensions 4 une a pins panne mt 401 Installation en module dynamique ss ss snrass eat ie nee anse 401 Installation en module statigue si ete mes NES Re 403 Configuration d Apache pour PHP x nes SR TN RER Bt 404 CHAPITRE 16 Assurer la disponibilit s curit et maintenance 405 Assurer la s curit de l environnement d ex cution 406 Installation configuration et maintenance du serveur de production 406 S CUTISET UN SET VENT ai liner en da nette tar en Bee ete ae 407 Pr voir tous les cas de catastrophes possibles 409 Mise jour des routines de sauvegarde 414 Exemple de routine de sauvegarde ner Do PE SES 414 Fr quence de sauvegarde n n en Tel te re AN Le RAS 415 Archivage ASSAULT EE etre 415 Ouelguesoutils tes sirtos srann ri eos E Resa 416 G n rer des rapports d incidents ana sd er
594. xploiter pour gagner du temps et de la fiabilit Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE R flexes simples d optimisation Ces r flexes concernent la partie codage Ils ne sont pas tous mentionn s ici Acqu rir de bons r flexes algorithmiques associ s une bonne connaissance interne de PHP est pr f rable l apprentissage par c ur d une liste de recettes C est pour quoi nous n h siterons pas faire r f rence au pourquoi du comment dans ce cha pitre M nager l utilisation de la m moire Pourquoi les serveurs web ont ils besoin de beaucoup de m moire RAM Toute requ te effectu e par un client sollicite de la m moire la requ te est plac e dans la m moire puis un algorithme PHP associ est mis dans la m moire pour tre pars et compil la vol e sous forme d opcodes langage machine stock s eux aussi dans la m moire L algorithme se d roule toutes les variables et les objets d clar s sont conserv s dans la m moire la session est plac e dans la m moire toutes les critures dans les fichiers ou bases de donn es font l objet de tampons encore dans la m moire Puis la fin de notre requ te utilisateur si certaines connexions fichier base de donn es ne sont pas ferm es elles restent dans la m moire Tout cela vous montre que la m moire est tr s sollicit e et qu il est important de savoir la m nager Dites vous bien que si votre c
595. z mentionner CVS de ne pas tenir compte de certains contenus les fichiers temporaires les configurations sp cifiques les m tafichiers de votre diteur etc Il existe d j une liste de motifs ignor s par d faut par CVS Le fichier cvsignore est l pour donner la possibilit d tendre cette liste Liste des fichiers ignor s par d faut RCS SCCS CVS CVS adm RCSLOG cvslog tags TAGS make state nse_depinfo Ke y _ old bak BAK orig rej del a olb o obj so exe Z elc ln core amp Organisation du projet conventions et outils PREMI RE PARTIE Exemple de contenu pour le fichier cvsignore Je gz zip tmp templates_t local_ sAvOIR Concernant les fichiers cvsignore et cvsignore e Si le fichier cvsignore fichier de niveau d p t n existe pas dans le dossier CVSROOT vous pou vez le cr er e Il est galement possible d appliquer ces motifs partir d un r pertoire en appliquant un m tafichier cvsignore dans votre r pertoire utilisateur personnel La syntaxe de ce m tafichier est la m me que celle du fichier cvsignore Cr ation de modules et import de donn es Le d p t de donn es stocke les informations dans une hi rarchie de r pertoires Cette hi rarchie est compos e d un r pertoire racine qui contient autant de r pertoire qu il y a de modules de base La notion de module est une convention
596. z plus loin dans ce chapitre une explication d taill e de cette structure importante du langage Exploiter les m canismes de m moire partag e Si de nombreuses requ tes exploitent les m mes ressources il peut tre utile de par tager du contenu ou des objets en m moire Cela acc l re les traitements et cono mise l utilisation de la m moire Il existe pour cela plusieurs solutions possibles en fonction de vos besoins La pre mi re permet de mettre en m moire partag e des cha nes de caract res par l interm diaire de fonctions bas niveau La seconde que nous allons voir ici permet d y mettre des variables dont des objets Assurer la qualit d un d veloppement PHP ET CHAPITRE 12 Pour exploiter ce m canisme nous devons utiliser l extension APC Alternative PHP Cache un outil de mise en cache fiable qui comporte des fonctions de cache m moire pour les variables Cette installation sera d crite la fin du chapitre 14 Mettre un objet en m moire partag e Construction d un objet mettre en m moire class Page public content page new Page page gt content array Test de m moire partag e Ce texte est stock en m moire Mise en m moire de l objet apc_store page page Dans un autre fichier on peut r cup rer notre objet pour l utiliser page apc_fetch page var_dump page N oubliez pas d enlever cet objet de la m mo
597. zer php Figure 14 22 Principe du cache d opcodes D but du script EE Compilation du script en opcodes w Ex cution des opcodes i Appels de fonction d include Sans cache d opcodes Avec cache d opcodes D but du script Y oui i Cach lt X non Compilation du script en opcodes Y Stockage des opcodes en cache i gt Ex cution des gt opcodes Chargement des opcodes cach s 7 Y Appels de fonction d include Bonnes pratiques de d veloppement en PHP TROISI ME PARTIE Mise en cache m moire des opcodes et des donn es Mise en pratique avec APC APC Alternative PHP Cache est un outil pratique et fiable de mise en cache Il permet en plus de la mise en cache des opcodes et des donn es de contr ler l tat du cache gr ce des fonctions pratiques APC gt http pecl php net package APC Documentation gt http livedocs phpdoc info index php l en amp q ref apc Installation L installation de l outil s effectue avec PEAR ou manuellement Sous Windows il vous faudra r cup rer la biblioth que d11 correspondante et la sp cifier dans le fichier php ini Sous Unix Linux vous devez r cup rer l extension apc so en utilisant PEAR en la t l chargeant sur le site d APC ou en compilant les sources puis diter le fichier php ini pour inscrire l extension comme ceci php ini C5 extension_di
Download Pdf Manuals
Related Search
Related Contents
AMICS Manual - Alemnis GmbH Samsung SGH-N620 Инструкция по использованию FINGERPRINT MODEL PB-U10BBZ100CAP / FAS Mehrsprachigkeit im Vorschulalter 無励磁作動形乾式電磁ブレーキ BXW 取扱説明書 NightTrace Manual Copyright © All rights reserved.
Failed to retrieve file