SlideShare une entreprise Scribd logo
1  sur  30
Nouvelle version, PHP 5.4

   Versions de PHP   Arnaud Lemercier
   Communauté
   Performance
                      arnaud@wixiweb.fr
   Fonctionnalités
                      @arnolem
   Migration
                      http://www.wixiweb.fr
   Production
                      @wixiweb
< Versions de PHP />
De Personal Home Page / Form Interpreter
     à PHP Hypertext Preprocessor
Historique de PHP
   1995 - PHP/FI créé par Rasmus Lerdorf
   1998 - PHP 3.0
    Réécriture par Andi Gutmans et Zeev Suraski

   2000 - PHP 4.0
    Zend Engine / Modularité / Performance / Session

   2004 - PHP 5.0
    Zend Engine 2 / POO / Exceptions / SPL / simpleXML

   2009 - PHP 5.3
    Namespace / PHAR / Fn anonyme / Late Static Binding
PHP 5.4 Version Mineure ou Majeure ?
    MAJEURE                        MINEURE

   Rupture de compatibilité      Nouvelles fonctionnalités
    Ex PHP 6                      Pas de rupture de
                                   compatibilité
                                  Mvt d'Extensions
                                   PECL <=> Core
    REVISION                       Ex PHP 5.4

   Correction de bug
    Ex PHP 5.4.1
< Communauté />
Restructuration de la communauté
   RFC pour chaque nouvelles fonctionnalités
    https://wiki.php.net/rfc/voting

   Un nouvelle version par an (support 2 + 1 an)
    https://wiki.php.net/rfc/releaseprocess

   De SVN vers GIT (sur php.net + miroir github)
    https://wiki.php.net/vcs/gitworkflow




             DEMARCHE QUALITE
< Performance />
Une réécriture en profondeur
Performances nettement améliorées




« Nous avons réécrit certaines parties du moteur PHP pour qu'il
consomme moins de mémoire et supporte plus d'utilisateurs
simultanés »

                                                     Zeev Suraski
Performance PHP 5.3 > PHP 5.4
Drupal            Zend Framework   Micro Bench

+7% requêtes      +21% requêtes    -50% tps d’exécution
-50% mémoire      -23% mémoire



WordPress         Doctrine 2       Symfony 2 (PHPUnit)

+9% requêtes      -40% mémoire     -55% mémoire
-40% mémoire                       -35% tps d’exécution
< Fonctionnalités />
Les nouveaux joujoux des développeurs
Short Open Tags assumé

     <?= $login ?>
Serveur web de développement test intégré
   Serveur web uniquement pour des tests
   Possibilité de définir un fichier de routage en php
Type Callable / Closure / Fonction anonyme
Short Array Syntax

<?PHP $array = ['val1', 'val2'] ; ?>
Arrays deferencing
 <?= fnc() ['index'] ?>
Appel direct de méthode d'instance
    <?= (new Obj()) → method() ?>
Invocations statiques dynamiques (call_user_func)

           <?PHP controller::{$action}() ; ?>
Notation Binaire

<?PHP $foo = 0b1100101010 ; ?>
Traits / Héritage multiple horizontal (1/4)
                         Réutilisation de fonctionnalité

                         Template de classe (Singleton)

                         Mais attention aux conflits
                          entre traits

                         Ne remplace pas la logique
                          d'héritage (parenté)

                         Priorités des méthodes :
                          Classe > Trait > Parent
Traits / Héritage multiple horizontal (2/4)

               Attention à la déclaration de propriétés
               dans les traits !




                                        PAF : Pastèque ! ^^
Traits / Héritage multiple horizontal (3/4)
Traits / Héritage multiple horizontal (4/4)
Gestion des conflits entre méthodes
Objet comme fonction
            Ajout de la méthode magique
            __invoke()
Amélioration des erreurs
php -r 'class abc foo'

PHP 5.3 :

PHP Parse error: syntax error, unexpected T_STRING,
expecting '{' in Command line code on line 1


PHP 5.4 :

PHP Parse error: syntax error, unexpected 'foo' (T_STRING),
expecting '{' in Command line code on line 1
Progression de l'upload d'un fichier
< Migration />
Que faut-il auditer dans vos applications ?
Migration : Incompatibilité
   Consultez le guide de        DIRECTIVES
   migration :                    Safe Mode
   http://php.net/migration54     Magic Quotes
                                  Register Globals



FONCTIONS                       LANGAGE
  session_is_registered(),       break $x ; continue $x
   session_register() et          htmlspecialchars() et
   session_unregister().           htmlentities() en UTF-8 par
                                   défaut
                                  Ext/SQLite
< Production />
             Je suis FAN !
On l'installe sur tous nos serveurs ?
PHP 5.4 : Pas de précipitation

●   La révision PHP 5.4.1 est déjà prévue pour le 25/04

●   Les IDE et outils ne sont pas encore tous compatibles

●   PHP 5.4 n'est pas encore dans les dépôts officiels (Linux)

●   Les CMS ne sont pas tous compatibles (Joomla 1.x, spip, ...)

●   Attention : OVH propose PHP 5.4 RC sur les mutualisés

●   Le patch de sécurité Suhosin n'est pas encore disponible

●   APC pour PHP 5.4 est en BETA
CONTACT
 arnaud@wixiweb.fr
 Twitter : @arnolem
http://www.wixiweb.fr

Contenu connexe

Tendances

Presentation Symfony2
Presentation Symfony2Presentation Symfony2
Presentation Symfony2
Ahmed ABATAL
 
Exposer des services web SOAP et REST avec symfony 1.4 et Zend Framework
Exposer des services web SOAP et REST avec symfony 1.4 et Zend FrameworkExposer des services web SOAP et REST avec symfony 1.4 et Zend Framework
Exposer des services web SOAP et REST avec symfony 1.4 et Zend Framework
Hugo Hamon
 
symfony : Un Framework Open-Source pour les Professionnels
symfony : Un Framework Open-Source pour les Professionnelssymfony : Un Framework Open-Source pour les Professionnels
symfony : Un Framework Open-Source pour les Professionnels
Fabien Potencier
 
AFUP & PHP @ Supelec
AFUP & PHP @ SupelecAFUP & PHP @ Supelec
AFUP & PHP @ Supelec
julien pauli
 

Tendances (20)

Presentation Symfony2
Presentation Symfony2Presentation Symfony2
Presentation Symfony2
 
Presentation article rest : How-to
Presentation article rest : How-toPresentation article rest : How-to
Presentation article rest : How-to
 
Exposer des services web SOAP et REST avec symfony 1.4 et Zend Framework
Exposer des services web SOAP et REST avec symfony 1.4 et Zend FrameworkExposer des services web SOAP et REST avec symfony 1.4 et Zend Framework
Exposer des services web SOAP et REST avec symfony 1.4 et Zend Framework
 
Presentation du framework symfony
Presentation du framework symfonyPresentation du framework symfony
Presentation du framework symfony
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notes
 
Symfony 2 : chapitre 1 - Présentation Générale
Symfony 2 : chapitre 1 - Présentation GénéraleSymfony 2 : chapitre 1 - Présentation Générale
Symfony 2 : chapitre 1 - Présentation Générale
 
Mieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyMieux Développer en PHP avec Symfony
Mieux Développer en PHP avec Symfony
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2
 
Presentation Symfony
Presentation SymfonyPresentation Symfony
Presentation Symfony
 
symfony : Un Framework Open-Source pour les Professionnels
symfony : Un Framework Open-Source pour les Professionnelssymfony : Un Framework Open-Source pour les Professionnels
symfony : Un Framework Open-Source pour les Professionnels
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
 
AFUP & PHP @ Supelec
AFUP & PHP @ SupelecAFUP & PHP @ Supelec
AFUP & PHP @ Supelec
 
Symfony 2 et le Web
Symfony 2 et le WebSymfony 2 et le Web
Symfony 2 et le Web
 
T3UNIFR12 - Réussir sa mise à jour de typo3
T3UNIFR12 - Réussir sa mise à jour de typo3T3UNIFR12 - Réussir sa mise à jour de typo3
T3UNIFR12 - Réussir sa mise à jour de typo3
 
Symfony 2 : chapitre 2 - Les vues en Twig
Symfony 2 : chapitre 2 - Les vues en TwigSymfony 2 : chapitre 2 - Les vues en Twig
Symfony 2 : chapitre 2 - Les vues en Twig
 
Atelier Symfony2- Introduction
Atelier Symfony2- IntroductionAtelier Symfony2- Introduction
Atelier Symfony2- Introduction
 
Nouveautés de java 8
Nouveautés de java 8Nouveautés de java 8
Nouveautés de java 8
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHP
 
Php forum 2017 - Maisons du Monde
Php forum 2017 - Maisons du MondePhp forum 2017 - Maisons du Monde
Php forum 2017 - Maisons du Monde
 
Symfony 2 : chapitre 4 - Les services et les formulaires
Symfony 2 : chapitre 4 - Les services et les formulairesSymfony 2 : chapitre 4 - Les services et les formulaires
Symfony 2 : chapitre 4 - Les services et les formulaires
 

En vedette

En vedette (9)

Php & My Sql
Php & My SqlPhp & My Sql
Php & My Sql
 
script site e-commerce -php
script site e-commerce -php script site e-commerce -php
script site e-commerce -php
 
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
 
E commerce - solutions techniques
E commerce - solutions techniquesE commerce - solutions techniques
E commerce - solutions techniques
 
Développement d'un site web de E-Commerce avec PHP (Première Partie)
Développement d'un site web de E-Commerce avec PHP (Première Partie)Développement d'un site web de E-Commerce avec PHP (Première Partie)
Développement d'un site web de E-Commerce avec PHP (Première Partie)
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHP
 
Php
PhpPhp
Php
 
Comment réaliser une bonne application mobile de marque ?
Comment réaliser une bonne application mobile de marque ?Comment réaliser une bonne application mobile de marque ?
Comment réaliser une bonne application mobile de marque ?
 
Cours 'E-Commerce' - partie 1
Cours 'E-Commerce' - partie 1Cours 'E-Commerce' - partie 1
Cours 'E-Commerce' - partie 1
 

Similaire à Présentation de PHP 5.4 [FR]

PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4
julien pauli
 
PHPTour-2011-PHP_Extensions
PHPTour-2011-PHP_ExtensionsPHPTour-2011-PHP_Extensions
PHPTour-2011-PHP_Extensions
julien pauli
 
20100221 my phingtool - blog
20100221   my phingtool - blog20100221   my phingtool - blog
20100221 my phingtool - blog
PHPPRO
 

Similaire à Présentation de PHP 5.4 [FR] (20)

PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.ppt
 
PHP 7 et Symfony 3
PHP 7 et Symfony 3PHP 7 et Symfony 3
PHP 7 et Symfony 3
 
Symfony 4 2019
Symfony 4 2019Symfony 4 2019
Symfony 4 2019
 
Php 5.3
Php 5.3Php 5.3
Php 5.3
 
Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4
 
Lp web tp3_idse
Lp web tp3_idseLp web tp3_idse
Lp web tp3_idse
 
PHPTour-2011-PHP_Extensions
PHPTour-2011-PHP_ExtensionsPHPTour-2011-PHP_Extensions
PHPTour-2011-PHP_Extensions
 
20100221 my phingtool - blog
20100221   my phingtool - blog20100221   my phingtool - blog
20100221 my phingtool - blog
 
Des tests modernes pour Drupal
Des tests modernes pour DrupalDes tests modernes pour Drupal
Des tests modernes pour Drupal
 
BC Breaks - Incompatibilites PHP7
BC Breaks - Incompatibilites PHP7BC Breaks - Incompatibilites PHP7
BC Breaks - Incompatibilites PHP7
 
PHP5: Endgame
PHP5: EndgamePHP5: Endgame
PHP5: Endgame
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenable
 
Nouveautés php 7
Nouveautés php 7Nouveautés php 7
Nouveautés php 7
 
Php 7.4 2020-01-28 - afup
Php 7.4   2020-01-28 - afupPhp 7.4   2020-01-28 - afup
Php 7.4 2020-01-28 - afup
 
PHP mysql Xml.pdf
PHP mysql Xml.pdfPHP mysql Xml.pdf
PHP mysql Xml.pdf
 
Xhprof
XhprofXhprof
Xhprof
 
PHP mysql Xml.doc
PHP mysql Xml.docPHP mysql Xml.doc
PHP mysql Xml.doc
 
Lbv Dev Meetup #1
Lbv Dev Meetup #1Lbv Dev Meetup #1
Lbv Dev Meetup #1
 
Apache for développeurs PHP
Apache for développeurs PHPApache for développeurs PHP
Apache for développeurs PHP
 

Présentation de PHP 5.4 [FR]

  • 1. Nouvelle version, PHP 5.4  Versions de PHP Arnaud Lemercier  Communauté  Performance arnaud@wixiweb.fr  Fonctionnalités @arnolem  Migration http://www.wixiweb.fr  Production @wixiweb
  • 2. < Versions de PHP /> De Personal Home Page / Form Interpreter à PHP Hypertext Preprocessor
  • 3. Historique de PHP  1995 - PHP/FI créé par Rasmus Lerdorf  1998 - PHP 3.0 Réécriture par Andi Gutmans et Zeev Suraski  2000 - PHP 4.0 Zend Engine / Modularité / Performance / Session  2004 - PHP 5.0 Zend Engine 2 / POO / Exceptions / SPL / simpleXML  2009 - PHP 5.3 Namespace / PHAR / Fn anonyme / Late Static Binding
  • 4. PHP 5.4 Version Mineure ou Majeure ? MAJEURE MINEURE  Rupture de compatibilité  Nouvelles fonctionnalités Ex PHP 6  Pas de rupture de compatibilité  Mvt d'Extensions PECL <=> Core REVISION Ex PHP 5.4  Correction de bug Ex PHP 5.4.1
  • 6. Restructuration de la communauté  RFC pour chaque nouvelles fonctionnalités https://wiki.php.net/rfc/voting  Un nouvelle version par an (support 2 + 1 an) https://wiki.php.net/rfc/releaseprocess  De SVN vers GIT (sur php.net + miroir github) https://wiki.php.net/vcs/gitworkflow DEMARCHE QUALITE
  • 7. < Performance /> Une réécriture en profondeur
  • 8. Performances nettement améliorées « Nous avons réécrit certaines parties du moteur PHP pour qu'il consomme moins de mémoire et supporte plus d'utilisateurs simultanés » Zeev Suraski
  • 9. Performance PHP 5.3 > PHP 5.4 Drupal Zend Framework Micro Bench +7% requêtes +21% requêtes -50% tps d’exécution -50% mémoire -23% mémoire WordPress Doctrine 2 Symfony 2 (PHPUnit) +9% requêtes -40% mémoire -55% mémoire -40% mémoire -35% tps d’exécution
  • 10. < Fonctionnalités /> Les nouveaux joujoux des développeurs
  • 11. Short Open Tags assumé <?= $login ?>
  • 12. Serveur web de développement test intégré  Serveur web uniquement pour des tests  Possibilité de définir un fichier de routage en php
  • 13. Type Callable / Closure / Fonction anonyme
  • 14. Short Array Syntax <?PHP $array = ['val1', 'val2'] ; ?>
  • 15. Arrays deferencing <?= fnc() ['index'] ?>
  • 16. Appel direct de méthode d'instance <?= (new Obj()) → method() ?>
  • 17. Invocations statiques dynamiques (call_user_func) <?PHP controller::{$action}() ; ?>
  • 18. Notation Binaire <?PHP $foo = 0b1100101010 ; ?>
  • 19. Traits / Héritage multiple horizontal (1/4)  Réutilisation de fonctionnalité  Template de classe (Singleton)  Mais attention aux conflits entre traits  Ne remplace pas la logique d'héritage (parenté)  Priorités des méthodes : Classe > Trait > Parent
  • 20. Traits / Héritage multiple horizontal (2/4) Attention à la déclaration de propriétés dans les traits ! PAF : Pastèque ! ^^
  • 21. Traits / Héritage multiple horizontal (3/4)
  • 22. Traits / Héritage multiple horizontal (4/4) Gestion des conflits entre méthodes
  • 23. Objet comme fonction Ajout de la méthode magique __invoke()
  • 24. Amélioration des erreurs php -r 'class abc foo' PHP 5.3 : PHP Parse error: syntax error, unexpected T_STRING, expecting '{' in Command line code on line 1 PHP 5.4 : PHP Parse error: syntax error, unexpected 'foo' (T_STRING), expecting '{' in Command line code on line 1
  • 25. Progression de l'upload d'un fichier
  • 26. < Migration /> Que faut-il auditer dans vos applications ?
  • 27. Migration : Incompatibilité Consultez le guide de DIRECTIVES migration :  Safe Mode http://php.net/migration54  Magic Quotes  Register Globals FONCTIONS LANGAGE  session_is_registered(),  break $x ; continue $x session_register() et  htmlspecialchars() et session_unregister(). htmlentities() en UTF-8 par défaut  Ext/SQLite
  • 28. < Production /> Je suis FAN ! On l'installe sur tous nos serveurs ?
  • 29. PHP 5.4 : Pas de précipitation ● La révision PHP 5.4.1 est déjà prévue pour le 25/04 ● Les IDE et outils ne sont pas encore tous compatibles ● PHP 5.4 n'est pas encore dans les dépôts officiels (Linux) ● Les CMS ne sont pas tous compatibles (Joomla 1.x, spip, ...) ● Attention : OVH propose PHP 5.4 RC sur les mutualisés ● Le patch de sécurité Suhosin n'est pas encore disponible ● APC pour PHP 5.4 est en BETA
  • 30. CONTACT arnaud@wixiweb.fr Twitter : @arnolem http://www.wixiweb.fr