SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
PHP
Utilisation optimale
 et professionnelle



 Utilisation optimale et professionnelle de PHP
Vos conférenciers


●
    Jean-Marc Fontaine
    Fondateur de Kanopée
    jmf@kanopee.net

●
    Guillaume Ponçon
    Architecte / Formateur PHP chez Anaska
    Auteur de l'ouvrage français Best Practices PHP 5
    (présenté à la fin de ce document)
    guillaume@anaska.com




                        Utilisation optimale et professionnelle de PHP
De quoi allons-nous parler ?


●
    Optimiser son espace de travail
●
    Optimiser ses développements
●
    Optimiser un projet PHP en équipe
●
    Optimiser le déploiement des applications
●
    Optimiser les performances à l'exécution




              Utilisation optimale et professionnelle de PHP
Installation de PHP


●
    Installation d'un paquetage (ex : WAMP)
    –   Avantages : installation très rapide et facile de
        PHP, Apache, MySQL et d'outils (phpMyAdmin,
        etc.)
    –   Inconvénients : stabilité et performances figés
●
    Compilation manuelle sur mesure
    –   Avantages : performances, stabilité, aucune
        limitation
    –   Inconvénients : installation longue, demande
        des connaissances.


                 Utilisation optimale et professionnelle de PHP
Adaptation de l'installation à
           l'environnement

●
    En développement et en pré-production
    –   Niveau d'erreur maxi, affiché à l'écran
    –   Débogueur, profileur
    –   Tests de recette
●
    En production
    –   Niveau d'erreur réduit, logué, non affiché
    –   Optimiseur (cache d'opcodes)
    –   Monitoring et remontée d'information



                 Utilisation optimale et professionnelle de PHP
Installation de PHP :
          erreurs du monde professionnel

●
    Laisser la quot;conf par défautquot;
●
    Ignorer l'importance débogage / le profiling
●
    Utiliser des vieilles version de PHP et ne pas
    évoluer.
●
    Ne pas utiliser de cache d'opcodes quand celui-
    ci peut significativement optimiser les
    performances.

●
    Demo : install manuelle / Xdebug / KCacheGrind


               Utilisation optimale et professionnelle de PHP
Installation de PHP :
débogage : Xdebug + Kcachegrind




    Utilisation optimale et professionnelle de PHP
Installation de PHP :
         quelques liens

●
    WAMP : http://www.wampserver.com
●
    PHP : http://www.php.net




              Utilisation optimale et professionnelle de PHP
Espace de travail : quelques outils


●
    IDE simples
    –   Scite / UltraEdit / Crimson Editor
    –   Emacs / Xemacs / VI / VIM
●
    IDE de taille moyenne
    –   PHP Edit / Komodo
●
    IDE Avancés
    –   PHP Eclipse
    –   Zend Studio


                Utilisation optimale et professionnelle de PHP
Développement :
           les architectures types

●
    Le site simple
    –   Ne nécessite aucune ou peu de préparation
    –   Stratégie de débogage à la quot;ifquot; / quot;echoquot;,
        var_dump()
●
    Le site lourd ou le système d'information
    –   Préparation préalable
    –   Séparation du code et de la présentation
    –   Logique métier indépendante
    –   Débogage avancé

                Utilisation optimale et professionnelle de PHP
Développement :
           les architectures types

●
    Le portail complexe
    –   Stratégie de performances en charge
    –   Souvent basé sur un motif MVC
    –   Débogage et profiling avancé
    –   POO & gestion rigoureuse des exceptions
    –   Gestion du projet sur IDE avancé
    –   Documentation basée sur phpdoc
    –   Gestion des événements / stratégie de
        remontée d'informations

                Utilisation optimale et professionnelle de PHP
Développement :
         erreurs du monde professionnel

●
    Négliger les possibilités POO de PHP 5
●
    Négliger les évolutions de PHP 5 : XML,
    extensions nouvelle génération, SPL, etc.
●
    Trop de souplesse, pas assez de rigueur
●
    Des conventions trop vagues et peu appliquées,
    voir inexistantes
●
    Ne pas savoir doser entre procédural et objet




              Utilisation optimale et professionnelle de PHP
Choisir un framework


●
    Il existe de nombreux frameworks en PHP
    –   Copix, Zend Framework, etc.
●
    Un bon framework est...
    –   Pérenne : souvent mis à jour par une équipe
        compétente et toujours compatible avec la
        dernière version stable de PHP.
    –   Simple et efficace : il ne comporte pas 36
        couches d'abstractions et ne requiert pas 3
        jours d'études pour être adopté.


                Utilisation optimale et professionnelle de PHP
L'architecture MVC


●
    Une application basée sur MVC :
                                      visiteur




                                    Contrôleur




                      Modèle                           Vue

         Données                                                templates



                                  Bibliothèques


                   Utilisation optimale et professionnelle de PHP
Exemple de framework : Zend


●
    Une volonté de simplicité
●
    Basé sur une architecture MVC
●
    Des conventions de développement complètes
●
    De nombreuses libraires
●
    Possibilité de créer ses objets ou d'en ajouter.

●
    Demo : petite appli de gestion de tâches




               Utilisation optimale et professionnelle de PHP
La documentation


PHPDOC est la norme à respecter.


                         code source




     DOC                                                    DOC
                           PHPDOC
     PDF                                                    HTML




                            Editeur


           Utilisation optimale et professionnelle de PHP
Exemple de balisage PHPDoc

<?php
/**
 * Classe d'abstraction pour la base de données
 */
class AFUP_Base_De_Donnees
{
    /**
     * Lien de la connection vers le serveur
     * @var     string
     * @access private
     */
        var $_lien = null;

  /**
   * Contructeur. Etablit une connexion au serveur et sélectionne la base de données indiquée
   *
   * @param string $hote           Adresse du serveur
   * @param string $base           Nom de la base
   * @param string $utilisateur Nom de l'utilisateur
   * @param string $mot_de_passe Mot de passe
   * @access public
   * @return void
   */
       function AFUP_Base_De_Donnees($hote, $base, $utilisateur, $mot_de_passe)
       {
             $this->_lien = mysql_connect($hote, $utilisateur, $mot_de_passe) or die('Connexion à la base de données
impossible');
      $this->selectionnerBase($base);
       }
}
?>

                                 Utilisation optimale et professionnelle de PHP
Exemple de rendu par PHPDocumentor




   Utilisation optimale et professionnelle de PHP
Les tests unitaires


●
    Ils garantissent l'intégrité des opérations
    élémentaires et empêchent les régressions.
●
    L'investissement en temps passé au début est
    toujours rentabilisé par la suite :
    –   Détection automatique des problèmes.
    –   Détection et correction immédiate des
        erreurs.
    –   Détecte les exceptions à l'exécution.
    –   Met en oeuvre des exemples d'utilisation.


                Utilisation optimale et professionnelle de PHP
Les tests de recette


●
    Les tests unitaires permettent de tester les
    objets techniques et métiers
●
    Les tests de recette simulent des scénarios
    utilisateurs
●
    Il existe différentes approches techniques :
    –   Simulation du navigateur (Simple Test)
    –   Exécution des tests dans le navigateur
        (Selenium)



                Utilisation optimale et professionnelle de PHP
Exemple de test de recette




    Utilisation optimale et professionnelle de PHP
Optimiser les développements à
           plusieurs
●
    Utiliser un gestionnaire de versions
    –   Objectifs
    –   Principe
●
    Gestionnaires de versions courants
    –   CVS
    –   Subversion
●
    Différents types de clients
    –   Application autonome
    –   Intégration dans le système d'exploitation
    –   Intégration dans l'IDE
                   Utilisation optimale et professionnelle de PHP
Outils de maintenance


●
    Génération automatique des applications
    –   Principe / objectif
    –   Un outil : Phing
●
    Déploiement automatisé
    –   Scripts CLI
    –   Utilisation d'un gestionnaire (PEAR)
●
    Maintenant avancée
    –   Les nightly builds


                 Utilisation optimale et professionnelle de PHP
Exemple d'utilisation de Phing

<?xml version=quot;1.0quot;?>
<project name=quot;MonApplicationquot; default=quot;archivagequot; basedir=quot;.quot;>
 <target name=quot;preparationquot;>
  <echo msg=quot;Préparation ...quot; />
  <mkdir dir=quot;./buildquot; />
 </target>
 <target name=quot;copiequot; depends=quot;preparationquot;>
  <echo>Construction ...</echo>
  <copy file=quot;./src/Fichier.phpquot; to=quot;./build/Fichier.phpquot;/>
  <copy file=quot;./src/Fichier2.phpquot; to=quot;./build/Fichier2.phpquot;/>
 </target>
 <target name=quot;archivagequot; depends=quot;copiequot;>
  <echo message=quot;Création de l'archive ...quot; />
  <tar outfile=quot;MonApplication.tar.gzquot; basedir=quot;./buildquot;/>
 </target>
 <target name=quot;nettoyagequot;>
  <echo msg=quot;Nettoyage ...quot;/>
  <delete file=quot;./buildquot;/>
 </target>
</project>

                    Utilisation optimale et professionnelle de PHP
Optimisation à l'exécution : cache de
           bas niveau

●
    Qu'est-ce qu'un cache d'opcodes ?
    –   Principe
    –   Cache d'opcodes existants
●
    Utilisation avancée du cache d'opcodes
    –   Mémoire partagée avec APC
    –   Extraction d'informations




                   Utilisation optimale et professionnelle de PHP
Fonctionnement des caches d'opcodes




    Utilisation optimale et professionnelle de PHP
Optimisation à l'exécution : cache de
              haut niveau

●
    Principe du cache de haut niveau
    –   Cache de pages
    –   Cache partiel (de données)
●
    Solutions de cache
    –   Cache du moteur de templates
    –   Cache manuel
    –   Outils de cache
         ●
             jpcache
         ●
             PEAR::Cache et PEAR::Cache_Lite

                   Utilisation optimale et professionnelle de PHP
Références

                        quot;Best practices PHP 5quot; est un ouvrage
                        français spécialement dédié à l'utilisation
                        optimale de PHP dans le monde
                        professionnel.
                        Cet ouvrage répertorie, de la conception à
                        l'exploitation, les meilleures pratiques de
                        développement PHP et les erreurs
                        courantes à éviter. Il est un condensé
                        d'expertise acquise au cours de
                        nombreuses années d'adoption de PHP en
                        entreprise.
                        Guillaume Ponçon est actuellement
                        responsable des formations PHP chez
                        Anaska et organise des formations PHP
                        expert et bonnes pratiques efficaces pour
                        le monde professionnel, en collaboration
                        avec les meilleurs experts PHP et J2EE
                        francophones.
                        http://www.anaska.com/formation-
                        php.php
    Utilisation optimale et professionnelle de PHP

Contenu connexe

Tendances

Cours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partieCours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partiekadzaki
 
Cours php & Mysql - 3éme partie
Cours php & Mysql - 3éme partieCours php & Mysql - 3éme partie
Cours php & Mysql - 3éme partiekadzaki
 
Introduction à CakePHP
Introduction à CakePHPIntroduction à CakePHP
Introduction à CakePHPPierre MARTIN
 
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPhp 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPierre Faure
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonyVincent Composieux
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPPascal MARTIN
 
Symfony with angular.pptx
Symfony with angular.pptxSymfony with angular.pptx
Symfony with angular.pptxEsokia
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2Hugo Hamon
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJSAbdoulaye Dieng
 
AngularJS et autres techno frontend
AngularJS et autres techno frontendAngularJS et autres techno frontend
AngularJS et autres techno frontendyllieth
 
Php mysql cours
Php mysql coursPhp mysql cours
Php mysql courszan
 
Application web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapApplication web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapBassem ABCHA
 
Introduction à Angular JS
Introduction à Angular JSIntroduction à Angular JS
Introduction à Angular JSAntoine Rey
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesNoel GUILBERT
 
Architecture mvc
Architecture mvcArchitecture mvc
Architecture mvcMadridal
 

Tendances (20)

Cours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partieCours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partie
 
Cours php & Mysql - 3éme partie
Cours php & Mysql - 3éme partieCours php & Mysql - 3éme partie
Cours php & Mysql - 3éme partie
 
Introduction à CakePHP
Introduction à CakePHPIntroduction à CakePHP
Introduction à CakePHP
 
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPhp 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVC
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs Symfony
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHP
 
Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
 
Symfony with angular.pptx
Symfony with angular.pptxSymfony with angular.pptx
Symfony with angular.pptx
 
Cakephp
CakephpCakephp
Cakephp
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJS
 
AngularJS et autres techno frontend
AngularJS et autres techno frontendAngularJS et autres techno frontend
AngularJS et autres techno frontend
 
Php mysql cours
Php mysql coursPhp mysql cours
Php mysql cours
 
Application web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapApplication web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrap
 
Laravel Blade
Laravel BladeLaravel Blade
Laravel Blade
 
Introduction à Angular JS
Introduction à Angular JSIntroduction à Angular JS
Introduction à Angular JS
 
Les framework mvc
Les framework mvcLes framework mvc
Les framework mvc
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
 
Architecture mvc
Architecture mvcArchitecture mvc
Architecture mvc
 
Cours JavaScript
Cours JavaScriptCours JavaScript
Cours JavaScript
 

En vedette

Comment mieux vivre avec ses tests d'acceptance
Comment mieux vivre avec ses tests d'acceptanceComment mieux vivre avec ses tests d'acceptance
Comment mieux vivre avec ses tests d'acceptanceKhanh Maudoux
 
Statistiques, indicateurs, performance et qualité : prendre la mesure de la b...
Statistiques, indicateurs, performance et qualité : prendre la mesure de la b...Statistiques, indicateurs, performance et qualité : prendre la mesure de la b...
Statistiques, indicateurs, performance et qualité : prendre la mesure de la b...PYR
 
2011-12-14 ASIP Santé JNI "Le marché intérieur des systèmes d’information de ...
2011-12-14 ASIP Santé JNI "Le marché intérieur des systèmes d’information de ...2011-12-14 ASIP Santé JNI "Le marché intérieur des systèmes d’information de ...
2011-12-14 ASIP Santé JNI "Le marché intérieur des systèmes d’information de ...ASIP Santé
 
La chenille qui fait des trous
La chenille qui fait des trousLa chenille qui fait des trous
La chenille qui fait des trousjaviera1974
 
Social learning, avenir de l'éducation au 21ème siècle
Social learning, avenir de l'éducation au 21ème siècleSocial learning, avenir de l'éducation au 21ème siècle
Social learning, avenir de l'éducation au 21ème siècleIPSYS Conseil & Formation
 
Cours "Communication des entreprises et développement durable"
Cours "Communication des entreprises et développement durable"Cours "Communication des entreprises et développement durable"
Cours "Communication des entreprises et développement durable"Marine Soichot
 
Rss lunch-8_sqli agency_avril2010
Rss lunch-8_sqli agency_avril2010Rss lunch-8_sqli agency_avril2010
Rss lunch-8_sqli agency_avril2010Wax Interactive
 
Etude : Processus / Méthode pour l’Élaboration du Schéma Directeur des Systè...
Etude : Processus / Méthode pour l’Élaboration  du Schéma Directeur des Systè...Etude : Processus / Méthode pour l’Élaboration  du Schéma Directeur des Systè...
Etude : Processus / Méthode pour l’Élaboration du Schéma Directeur des Systè...Jean-Antoine Moreau
 
Baromètre Converteo sur l’efficacité des moteurs de recherche interne - Etude...
Baromètre Converteo sur l’efficacité des moteurs de recherche interne - Etude...Baromètre Converteo sur l’efficacité des moteurs de recherche interne - Etude...
Baromètre Converteo sur l’efficacité des moteurs de recherche interne - Etude...alain Clapaud
 
Les Barbares Attaquent l'immobilier
Les Barbares Attaquent l'immobilierLes Barbares Attaquent l'immobilier
Les Barbares Attaquent l'immobilierTheFamily
 
Il était une fois la vie d'un Product Owner
Il était une fois la vie d'un Product OwnerIl était une fois la vie d'un Product Owner
Il était une fois la vie d'un Product OwnerRomain Couturier
 
Produire des contenus en ligne en bibliothèque
Produire des contenus en ligne en bibliothèqueProduire des contenus en ligne en bibliothèque
Produire des contenus en ligne en bibliothèqueMagalie Le Gall
 

En vedette (20)

Comment mieux vivre avec ses tests d'acceptance
Comment mieux vivre avec ses tests d'acceptanceComment mieux vivre avec ses tests d'acceptance
Comment mieux vivre avec ses tests d'acceptance
 
Statistiques, indicateurs, performance et qualité : prendre la mesure de la b...
Statistiques, indicateurs, performance et qualité : prendre la mesure de la b...Statistiques, indicateurs, performance et qualité : prendre la mesure de la b...
Statistiques, indicateurs, performance et qualité : prendre la mesure de la b...
 
Apple Istory
Apple IstoryApple Istory
Apple Istory
 
2011-12-14 ASIP Santé JNI "Le marché intérieur des systèmes d’information de ...
2011-12-14 ASIP Santé JNI "Le marché intérieur des systèmes d’information de ...2011-12-14 ASIP Santé JNI "Le marché intérieur des systèmes d’information de ...
2011-12-14 ASIP Santé JNI "Le marché intérieur des systèmes d’information de ...
 
Base des données réparties
Base des données répartiesBase des données réparties
Base des données réparties
 
La chenille qui fait des trous
La chenille qui fait des trousLa chenille qui fait des trous
La chenille qui fait des trous
 
Droit Et Deontologie Partie 1 Isfsc Sept 2009
Droit Et Deontologie Partie 1 Isfsc Sept 2009Droit Et Deontologie Partie 1 Isfsc Sept 2009
Droit Et Deontologie Partie 1 Isfsc Sept 2009
 
Paris
ParisParis
Paris
 
Social learning, avenir de l'éducation au 21ème siècle
Social learning, avenir de l'éducation au 21ème siècleSocial learning, avenir de l'éducation au 21ème siècle
Social learning, avenir de l'éducation au 21ème siècle
 
Cours "Communication des entreprises et développement durable"
Cours "Communication des entreprises et développement durable"Cours "Communication des entreprises et développement durable"
Cours "Communication des entreprises et développement durable"
 
Rss lunch-8_sqli agency_avril2010
Rss lunch-8_sqli agency_avril2010Rss lunch-8_sqli agency_avril2010
Rss lunch-8_sqli agency_avril2010
 
Etude : Processus / Méthode pour l’Élaboration du Schéma Directeur des Systè...
Etude : Processus / Méthode pour l’Élaboration  du Schéma Directeur des Systè...Etude : Processus / Méthode pour l’Élaboration  du Schéma Directeur des Systè...
Etude : Processus / Méthode pour l’Élaboration du Schéma Directeur des Systè...
 
Propriété intellectuelle nov 2012
Propriété intellectuelle nov 2012Propriété intellectuelle nov 2012
Propriété intellectuelle nov 2012
 
Du travail virtuel (teletravail) au BYOD
Du travail virtuel (teletravail) au BYODDu travail virtuel (teletravail) au BYOD
Du travail virtuel (teletravail) au BYOD
 
Baromètre Converteo sur l’efficacité des moteurs de recherche interne - Etude...
Baromètre Converteo sur l’efficacité des moteurs de recherche interne - Etude...Baromètre Converteo sur l’efficacité des moteurs de recherche interne - Etude...
Baromètre Converteo sur l’efficacité des moteurs de recherche interne - Etude...
 
Les Barbares Attaquent l'immobilier
Les Barbares Attaquent l'immobilierLes Barbares Attaquent l'immobilier
Les Barbares Attaquent l'immobilier
 
mission, vision, valeurs et stratégie
mission, vision, valeurs et stratégie mission, vision, valeurs et stratégie
mission, vision, valeurs et stratégie
 
Il était une fois la vie d'un Product Owner
Il était une fois la vie d'un Product OwnerIl était une fois la vie d'un Product Owner
Il était une fois la vie d'un Product Owner
 
Orl
OrlOrl
Orl
 
Produire des contenus en ligne en bibliothèque
Produire des contenus en ligne en bibliothèqueProduire des contenus en ligne en bibliothèque
Produire des contenus en ligne en bibliothèque
 

Similaire à Utilisation optimale et professionnelle de PHP

hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.pptadiouf2
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continuneuros
 
symfony : Simplifier le développement des interfaces bases de données (PHP ...
symfony : Simplifier le développement des interfaces bases de données (PHP ...symfony : Simplifier le développement des interfaces bases de données (PHP ...
symfony : Simplifier le développement des interfaces bases de données (PHP ...Fabien Potencier
 
PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005Eric D.
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesOxalide
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceLudovic Piot
 
08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur webNoël
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIHugo Hamon
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applicationsgoldoraf
 
Partie 1_Matriser les bases PHP v0555555555555.pptx
Partie 1_Matriser les bases PHP v0555555555555.pptxPartie 1_Matriser les bases PHP v0555555555555.pptx
Partie 1_Matriser les bases PHP v0555555555555.pptxHamzaElgari
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Alexandre Marie
 
Deboguer Avec Firephp
Deboguer Avec FirephpDeboguer Avec Firephp
Deboguer Avec FirephpDamien Seguy
 
Déboguer une application web avec FirePHP
Déboguer une application web avec FirePHPDéboguer une application web avec FirePHP
Déboguer une application web avec FirePHPJean-Marc Fontaine
 
PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1fayway
 
Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)LaNetscouade
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Normandie Web Xperts
 

Similaire à Utilisation optimale et professionnelle de PHP (20)

hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.ppt
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continu
 
symfony : Simplifier le développement des interfaces bases de données (PHP ...
symfony : Simplifier le développement des interfaces bases de données (PHP ...symfony : Simplifier le développement des interfaces bases de données (PHP ...
symfony : Simplifier le développement des interfaces bases de données (PHP ...
 
PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
Lp web tp3_idse
Lp web tp3_idseLp web tp3_idse
Lp web tp3_idse
 
MVC / Frameworks PHP
MVC / Frameworks PHPMVC / Frameworks PHP
MVC / Frameworks PHP
 
08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applications
 
Partie 1_Matriser les bases PHP v0555555555555.pptx
Partie 1_Matriser les bases PHP v0555555555555.pptxPartie 1_Matriser les bases PHP v0555555555555.pptx
Partie 1_Matriser les bases PHP v0555555555555.pptx
 
Des tests modernes pour Drupal
Des tests modernes pour DrupalDes tests modernes pour Drupal
Des tests modernes pour Drupal
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
 
Deboguer Avec Firephp
Deboguer Avec FirephpDeboguer Avec Firephp
Deboguer Avec Firephp
 
Déboguer une application web avec FirePHP
Déboguer une application web avec FirePHPDéboguer une application web avec FirePHP
Déboguer une application web avec FirePHP
 
PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1
 
Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
 
Maven
MavenMaven
Maven
 

Plus de Jean-Marc Fontaine

Gérer ses environnements de développement avec vagrant - PHP Tour Nantes 2012
Gérer ses environnements de développement avec vagrant - PHP Tour Nantes 2012Gérer ses environnements de développement avec vagrant - PHP Tour Nantes 2012
Gérer ses environnements de développement avec vagrant - PHP Tour Nantes 2012Jean-Marc Fontaine
 
Revue de code - PHP Tour Nantes 2012
Revue de code - PHP Tour Nantes 2012Revue de code - PHP Tour Nantes 2012
Revue de code - PHP Tour Nantes 2012Jean-Marc Fontaine
 
Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012Jean-Marc Fontaine
 
Gérer ses environnements de développement avec Vagrant - RMLL 2012
Gérer ses environnements de développement avec Vagrant - RMLL 2012Gérer ses environnements de développement avec Vagrant - RMLL 2012
Gérer ses environnements de développement avec Vagrant - RMLL 2012Jean-Marc Fontaine
 
La qualité au delà du code - Forum PHP 2012
La qualité au delà du code - Forum PHP 2012La qualité au delà du code - Forum PHP 2012
La qualité au delà du code - Forum PHP 2012Jean-Marc Fontaine
 
Gestion des dépendances dans un projet PHP - Forum PHP 2012
Gestion des dépendances dans un projet PHP - Forum PHP 2012Gestion des dépendances dans un projet PHP - Forum PHP 2012
Gestion des dépendances dans un projet PHP - Forum PHP 2012Jean-Marc Fontaine
 
Reprise sur incident - ConFoo 2012
Reprise sur incident - ConFoo 2012Reprise sur incident - ConFoo 2012
Reprise sur incident - ConFoo 2012Jean-Marc Fontaine
 
La qualité au-delà du code - ConFoo 2012
La qualité au-delà du code - ConFoo 2012La qualité au-delà du code - ConFoo 2012
La qualité au-delà du code - ConFoo 2012Jean-Marc Fontaine
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Jean-Marc Fontaine
 
Reprise sur incident - RMLL 2011
Reprise sur incident - RMLL 2011Reprise sur incident - RMLL 2011
Reprise sur incident - RMLL 2011Jean-Marc Fontaine
 
Organiser efficacement son dépôt de code - RMLL 2011
Organiser efficacement son dépôt de code - RMLL 2011Organiser efficacement son dépôt de code - RMLL 2011
Organiser efficacement son dépôt de code - RMLL 2011Jean-Marc Fontaine
 
Maintenir du code historique - RMLL 2011
Maintenir du code historique - RMLL 2011Maintenir du code historique - RMLL 2011
Maintenir du code historique - RMLL 2011Jean-Marc Fontaine
 
Comment monter son business grâce à l'Open Source ?
Comment monter son business grâce à l'Open Source ?Comment monter son business grâce à l'Open Source ?
Comment monter son business grâce à l'Open Source ?Jean-Marc Fontaine
 
Industrialiser ses développements PHP - RMLL 2010
Industrialiser ses développements PHP - RMLL 2010Industrialiser ses développements PHP - RMLL 2010
Industrialiser ses développements PHP - RMLL 2010Jean-Marc Fontaine
 
Revues de code - Forum PHP 2010
Revues de code - Forum PHP 2010Revues de code - Forum PHP 2010
Revues de code - Forum PHP 2010Jean-Marc Fontaine
 
Industrialisation de PHP - Be Zend 2010
Industrialisation de PHP - Be Zend 2010Industrialisation de PHP - Be Zend 2010
Industrialisation de PHP - Be Zend 2010Jean-Marc Fontaine
 
Solutions Linux 2010 - Maîtrise du développement PHP
Solutions Linux 2010 - Maîtrise du développement PHPSolutions Linux 2010 - Maîtrise du développement PHP
Solutions Linux 2010 - Maîtrise du développement PHPJean-Marc Fontaine
 
PHP 5.3 : Une étape importante sur la route vers PHP 6
PHP 5.3 : Une étape importante sur la route vers PHP 6PHP 5.3 : Une étape importante sur la route vers PHP 6
PHP 5.3 : Une étape importante sur la route vers PHP 6Jean-Marc Fontaine
 

Plus de Jean-Marc Fontaine (19)

Gérer ses environnements de développement avec vagrant - PHP Tour Nantes 2012
Gérer ses environnements de développement avec vagrant - PHP Tour Nantes 2012Gérer ses environnements de développement avec vagrant - PHP Tour Nantes 2012
Gérer ses environnements de développement avec vagrant - PHP Tour Nantes 2012
 
Revue de code - PHP Tour Nantes 2012
Revue de code - PHP Tour Nantes 2012Revue de code - PHP Tour Nantes 2012
Revue de code - PHP Tour Nantes 2012
 
Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012
 
Gérer ses environnements de développement avec Vagrant - RMLL 2012
Gérer ses environnements de développement avec Vagrant - RMLL 2012Gérer ses environnements de développement avec Vagrant - RMLL 2012
Gérer ses environnements de développement avec Vagrant - RMLL 2012
 
La qualité au delà du code - Forum PHP 2012
La qualité au delà du code - Forum PHP 2012La qualité au delà du code - Forum PHP 2012
La qualité au delà du code - Forum PHP 2012
 
Gestion des dépendances dans un projet PHP - Forum PHP 2012
Gestion des dépendances dans un projet PHP - Forum PHP 2012Gestion des dépendances dans un projet PHP - Forum PHP 2012
Gestion des dépendances dans un projet PHP - Forum PHP 2012
 
Reprise sur incident - ConFoo 2012
Reprise sur incident - ConFoo 2012Reprise sur incident - ConFoo 2012
Reprise sur incident - ConFoo 2012
 
La qualité au-delà du code - ConFoo 2012
La qualité au-delà du code - ConFoo 2012La qualité au-delà du code - ConFoo 2012
La qualité au-delà du code - ConFoo 2012
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011
 
Reprise sur incident - RMLL 2011
Reprise sur incident - RMLL 2011Reprise sur incident - RMLL 2011
Reprise sur incident - RMLL 2011
 
Organiser efficacement son dépôt de code - RMLL 2011
Organiser efficacement son dépôt de code - RMLL 2011Organiser efficacement son dépôt de code - RMLL 2011
Organiser efficacement son dépôt de code - RMLL 2011
 
Maintenir du code historique - RMLL 2011
Maintenir du code historique - RMLL 2011Maintenir du code historique - RMLL 2011
Maintenir du code historique - RMLL 2011
 
Comment monter son business grâce à l'Open Source ?
Comment monter son business grâce à l'Open Source ?Comment monter son business grâce à l'Open Source ?
Comment monter son business grâce à l'Open Source ?
 
Industrialiser ses développements PHP - RMLL 2010
Industrialiser ses développements PHP - RMLL 2010Industrialiser ses développements PHP - RMLL 2010
Industrialiser ses développements PHP - RMLL 2010
 
Revues de code - Forum PHP 2010
Revues de code - Forum PHP 2010Revues de code - Forum PHP 2010
Revues de code - Forum PHP 2010
 
Industrialisation de PHP - Be Zend 2010
Industrialisation de PHP - Be Zend 2010Industrialisation de PHP - Be Zend 2010
Industrialisation de PHP - Be Zend 2010
 
Solutions Linux 2010 - Maîtrise du développement PHP
Solutions Linux 2010 - Maîtrise du développement PHPSolutions Linux 2010 - Maîtrise du développement PHP
Solutions Linux 2010 - Maîtrise du développement PHP
 
PHP : Etat des lieux
PHP : Etat des lieuxPHP : Etat des lieux
PHP : Etat des lieux
 
PHP 5.3 : Une étape importante sur la route vers PHP 6
PHP 5.3 : Une étape importante sur la route vers PHP 6PHP 5.3 : Une étape importante sur la route vers PHP 6
PHP 5.3 : Une étape importante sur la route vers PHP 6
 

Utilisation optimale et professionnelle de PHP

  • 1. PHP Utilisation optimale et professionnelle Utilisation optimale et professionnelle de PHP
  • 2. Vos conférenciers ● Jean-Marc Fontaine Fondateur de Kanopée jmf@kanopee.net ● Guillaume Ponçon Architecte / Formateur PHP chez Anaska Auteur de l'ouvrage français Best Practices PHP 5 (présenté à la fin de ce document) guillaume@anaska.com Utilisation optimale et professionnelle de PHP
  • 3. De quoi allons-nous parler ? ● Optimiser son espace de travail ● Optimiser ses développements ● Optimiser un projet PHP en équipe ● Optimiser le déploiement des applications ● Optimiser les performances à l'exécution Utilisation optimale et professionnelle de PHP
  • 4. Installation de PHP ● Installation d'un paquetage (ex : WAMP) – Avantages : installation très rapide et facile de PHP, Apache, MySQL et d'outils (phpMyAdmin, etc.) – Inconvénients : stabilité et performances figés ● Compilation manuelle sur mesure – Avantages : performances, stabilité, aucune limitation – Inconvénients : installation longue, demande des connaissances. Utilisation optimale et professionnelle de PHP
  • 5. Adaptation de l'installation à l'environnement ● En développement et en pré-production – Niveau d'erreur maxi, affiché à l'écran – Débogueur, profileur – Tests de recette ● En production – Niveau d'erreur réduit, logué, non affiché – Optimiseur (cache d'opcodes) – Monitoring et remontée d'information Utilisation optimale et professionnelle de PHP
  • 6. Installation de PHP : erreurs du monde professionnel ● Laisser la quot;conf par défautquot; ● Ignorer l'importance débogage / le profiling ● Utiliser des vieilles version de PHP et ne pas évoluer. ● Ne pas utiliser de cache d'opcodes quand celui- ci peut significativement optimiser les performances. ● Demo : install manuelle / Xdebug / KCacheGrind Utilisation optimale et professionnelle de PHP
  • 7. Installation de PHP : débogage : Xdebug + Kcachegrind Utilisation optimale et professionnelle de PHP
  • 8. Installation de PHP : quelques liens ● WAMP : http://www.wampserver.com ● PHP : http://www.php.net Utilisation optimale et professionnelle de PHP
  • 9. Espace de travail : quelques outils ● IDE simples – Scite / UltraEdit / Crimson Editor – Emacs / Xemacs / VI / VIM ● IDE de taille moyenne – PHP Edit / Komodo ● IDE Avancés – PHP Eclipse – Zend Studio Utilisation optimale et professionnelle de PHP
  • 10. Développement : les architectures types ● Le site simple – Ne nécessite aucune ou peu de préparation – Stratégie de débogage à la quot;ifquot; / quot;echoquot;, var_dump() ● Le site lourd ou le système d'information – Préparation préalable – Séparation du code et de la présentation – Logique métier indépendante – Débogage avancé Utilisation optimale et professionnelle de PHP
  • 11. Développement : les architectures types ● Le portail complexe – Stratégie de performances en charge – Souvent basé sur un motif MVC – Débogage et profiling avancé – POO & gestion rigoureuse des exceptions – Gestion du projet sur IDE avancé – Documentation basée sur phpdoc – Gestion des événements / stratégie de remontée d'informations Utilisation optimale et professionnelle de PHP
  • 12. Développement : erreurs du monde professionnel ● Négliger les possibilités POO de PHP 5 ● Négliger les évolutions de PHP 5 : XML, extensions nouvelle génération, SPL, etc. ● Trop de souplesse, pas assez de rigueur ● Des conventions trop vagues et peu appliquées, voir inexistantes ● Ne pas savoir doser entre procédural et objet Utilisation optimale et professionnelle de PHP
  • 13. Choisir un framework ● Il existe de nombreux frameworks en PHP – Copix, Zend Framework, etc. ● Un bon framework est... – Pérenne : souvent mis à jour par une équipe compétente et toujours compatible avec la dernière version stable de PHP. – Simple et efficace : il ne comporte pas 36 couches d'abstractions et ne requiert pas 3 jours d'études pour être adopté. Utilisation optimale et professionnelle de PHP
  • 14. L'architecture MVC ● Une application basée sur MVC : visiteur Contrôleur Modèle Vue Données templates Bibliothèques Utilisation optimale et professionnelle de PHP
  • 15. Exemple de framework : Zend ● Une volonté de simplicité ● Basé sur une architecture MVC ● Des conventions de développement complètes ● De nombreuses libraires ● Possibilité de créer ses objets ou d'en ajouter. ● Demo : petite appli de gestion de tâches Utilisation optimale et professionnelle de PHP
  • 16. La documentation PHPDOC est la norme à respecter. code source DOC DOC PHPDOC PDF HTML Editeur Utilisation optimale et professionnelle de PHP
  • 17. Exemple de balisage PHPDoc <?php /** * Classe d'abstraction pour la base de données */ class AFUP_Base_De_Donnees { /** * Lien de la connection vers le serveur * @var string * @access private */ var $_lien = null; /** * Contructeur. Etablit une connexion au serveur et sélectionne la base de données indiquée * * @param string $hote Adresse du serveur * @param string $base Nom de la base * @param string $utilisateur Nom de l'utilisateur * @param string $mot_de_passe Mot de passe * @access public * @return void */ function AFUP_Base_De_Donnees($hote, $base, $utilisateur, $mot_de_passe) { $this->_lien = mysql_connect($hote, $utilisateur, $mot_de_passe) or die('Connexion à la base de données impossible'); $this->selectionnerBase($base); } } ?> Utilisation optimale et professionnelle de PHP
  • 18. Exemple de rendu par PHPDocumentor Utilisation optimale et professionnelle de PHP
  • 19. Les tests unitaires ● Ils garantissent l'intégrité des opérations élémentaires et empêchent les régressions. ● L'investissement en temps passé au début est toujours rentabilisé par la suite : – Détection automatique des problèmes. – Détection et correction immédiate des erreurs. – Détecte les exceptions à l'exécution. – Met en oeuvre des exemples d'utilisation. Utilisation optimale et professionnelle de PHP
  • 20. Les tests de recette ● Les tests unitaires permettent de tester les objets techniques et métiers ● Les tests de recette simulent des scénarios utilisateurs ● Il existe différentes approches techniques : – Simulation du navigateur (Simple Test) – Exécution des tests dans le navigateur (Selenium) Utilisation optimale et professionnelle de PHP
  • 21. Exemple de test de recette Utilisation optimale et professionnelle de PHP
  • 22. Optimiser les développements à plusieurs ● Utiliser un gestionnaire de versions – Objectifs – Principe ● Gestionnaires de versions courants – CVS – Subversion ● Différents types de clients – Application autonome – Intégration dans le système d'exploitation – Intégration dans l'IDE Utilisation optimale et professionnelle de PHP
  • 23. Outils de maintenance ● Génération automatique des applications – Principe / objectif – Un outil : Phing ● Déploiement automatisé – Scripts CLI – Utilisation d'un gestionnaire (PEAR) ● Maintenant avancée – Les nightly builds Utilisation optimale et professionnelle de PHP
  • 24. Exemple d'utilisation de Phing <?xml version=quot;1.0quot;?> <project name=quot;MonApplicationquot; default=quot;archivagequot; basedir=quot;.quot;> <target name=quot;preparationquot;> <echo msg=quot;Préparation ...quot; /> <mkdir dir=quot;./buildquot; /> </target> <target name=quot;copiequot; depends=quot;preparationquot;> <echo>Construction ...</echo> <copy file=quot;./src/Fichier.phpquot; to=quot;./build/Fichier.phpquot;/> <copy file=quot;./src/Fichier2.phpquot; to=quot;./build/Fichier2.phpquot;/> </target> <target name=quot;archivagequot; depends=quot;copiequot;> <echo message=quot;Création de l'archive ...quot; /> <tar outfile=quot;MonApplication.tar.gzquot; basedir=quot;./buildquot;/> </target> <target name=quot;nettoyagequot;> <echo msg=quot;Nettoyage ...quot;/> <delete file=quot;./buildquot;/> </target> </project> Utilisation optimale et professionnelle de PHP
  • 25. Optimisation à l'exécution : cache de bas niveau ● Qu'est-ce qu'un cache d'opcodes ? – Principe – Cache d'opcodes existants ● Utilisation avancée du cache d'opcodes – Mémoire partagée avec APC – Extraction d'informations Utilisation optimale et professionnelle de PHP
  • 26. Fonctionnement des caches d'opcodes Utilisation optimale et professionnelle de PHP
  • 27. Optimisation à l'exécution : cache de haut niveau ● Principe du cache de haut niveau – Cache de pages – Cache partiel (de données) ● Solutions de cache – Cache du moteur de templates – Cache manuel – Outils de cache ● jpcache ● PEAR::Cache et PEAR::Cache_Lite Utilisation optimale et professionnelle de PHP
  • 28. Références quot;Best practices PHP 5quot; est un ouvrage français spécialement dédié à l'utilisation optimale de PHP dans le monde professionnel. Cet ouvrage répertorie, de la conception à l'exploitation, les meilleures pratiques de développement PHP et les erreurs courantes à éviter. Il est un condensé d'expertise acquise au cours de nombreuses années d'adoption de PHP en entreprise. Guillaume Ponçon est actuellement responsable des formations PHP chez Anaska et organise des formations PHP expert et bonnes pratiques efficaces pour le monde professionnel, en collaboration avec les meilleurs experts PHP et J2EE francophones. http://www.anaska.com/formation- php.php Utilisation optimale et professionnelle de PHP