Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Nouveautés PHP 5.3 – Pascal MARTIN




« Que nous 
   réserve 
l'avenir ? »
Nouveautés PHP 5.3 – Pascal MARTIN




Nouveautés de PHP 5.3

   The future is here!
        – almost
Nouveautés PHP 5.3 – Pascal MARTIN

                                                   Qui suis-je ?
●
    Pascal MARTIN
●...
Nouveautés PHP 5.3 – Pascal MARTIN

                                                Introduction
●
    Versions de PHP
   ...
Nouveautés PHP 5.3 – Pascal MARTIN

                    « Pack » d'exemples / tests
●
    Série d'exemples et de tests
   ...
Nouveautés PHP 5.3 – Pascal MARTIN

                                             E_DEPRECATED
●
    Nouveau niveau de rapp...
Nouveautés PHP 5.3 – Pascal MARTIN

                   Constante magique __DIR__
●
    Travail par rapport au répertoire o...
Nouveautés PHP 5.3 – Pascal MARTIN


                Saut inconditionnel : « goto »
●
    Ajout de l'instruction « goto »
...
Nouveautés PHP 5.3 – Pascal MARTIN


                      LSB – Late Static Binding
●
    PHP 5.2 : résolution statique à...
Nouveautés PHP 5.3 – Pascal MARTIN

              Appels statiques dynamiques
class A {
  public static function
methodeSt...
Nouveautés PHP 5.3 – Pascal MARTIN

                                    Syntaxe NOWDOC
●
    Depuis PHP 4, syntaxe Heredoc...
Nouveautés PHP 5.3 – Pascal MARTIN


                     GC – Garbage Collector – 1
●
    PHP <= 5.2
    ●
        Référe...
Nouveautés PHP 5.3 – Pascal MARTIN

                GC – Garbage Collector – 2
●
    Rouge : Sans Garbage Collector
●
    ...
Nouveautés PHP 5.3 – Pascal MARTIN


                        Lambdas et Closures – 1
●
    Ceux qui ont fait du Javascript...
Nouveautés PHP 5.3 – Pascal MARTIN


                         Lambdas et Closures – 2
●
    Exemple évident
    ●
        ...
Nouveautés PHP 5.3 – Pascal MARTIN


                            Lambdas et Closures – 3
●
    « use » : Import d'une vari...
Nouveautés PHP 5.3 – Pascal MARTIN


                                      Lambdas et Closures – 4
●
    Création d'une cl...
Nouveautés PHP 5.3 – Pascal MARTIN


                                      Lambdas et Closures – 5
●
    Même chose, en le...
Nouveautés PHP 5.3 – Pascal MARTIN

                 intl – Internationalisation – 1
●
    Extension « intl » incluse en s...
Nouveautés PHP 5.3 – Pascal MARTIN

                Intl – Internationalisation – 2
●
    Nombres / monnaies
echo NumberFo...
Nouveautés PHP 5.3 – Pascal MARTIN

                             Manipulation de dates
date_default_timezone_set('Europe/P...
Nouveautés PHP 5.3 – Pascal MARTIN

                                        Opérateur ? : revu
●
    Opérateur ternaire ; ...
Nouveautés PHP 5.3 – Pascal MARTIN


                                                       mysqlnd
●
    Bibliothèque spé...
Nouveautés PHP 5.3 – Pascal MARTIN


                                      Phar : PHP Archive
●
    « PHP Archive »
    ●
...
Nouveautés PHP 5.3 – Pascal MARTIN

                                    Ajouts à la SPL – 1
●
    Itérateurs au niveau du ...
Nouveautés PHP 5.3 – Pascal MARTIN

                                                 Ajouts à la SPL – 2
●
    Nouvelles s...
Nouveautés PHP 5.3 – Pascal MARTIN


                                 Espaces de noms – 1
●
    Espaces de noms, « namespa...
Nouveautés PHP 5.3 – Pascal MARTIN

                                Espaces de noms – 2
●
    Déclaration d'un namespace
 ...
Nouveautés PHP 5.3 – Pascal MARTIN

                                     Espaces de noms – 3
●
    Attention
    ●
       ...
Nouveautés PHP 5.3 – Pascal MARTIN

                                Espaces de noms – 4
●
    Organisation des fichiers
  ...
Nouveautés PHP 5.3 – Pascal MARTIN

                               Espaces de noms – 5
●
    Import d'un espace de noms : ...
Nouveautés PHP 5.3 – Pascal MARTIN

                                Espaces de noms – 6
●
    Autoloading
    ●
        No...
Nouveautés PHP 5.3 – Pascal MARTIN

                                                         Divers
●   getopt
    ●
     ...
Nouveautés PHP 5.3 – Pascal MARTIN

                                          Performances
●
    Nombreuses améliorations ...
Nouveautés PHP 5.3 – Pascal MARTIN


                 Conclusion : Le futur est là...
●
    Nouveautés et améliorations
  ...
Nouveautés PHP 5.3 – Pascal MARTIN

                                       … ou presque !
●
    Version alpha3 tout juste ...
Nouveautés PHP 5.3 – Pascal MARTIN




Questions ?
Nouveautés PHP 5.3 – Pascal MARTIN




Merci à tous,

Bon appétit !
Upcoming SlideShare
Loading in …5
×

PHP 5.3 : les nouveautés du futur si proche

6,284 views

Published on

PHP 5.3 vient de sortir en version alpha3 ; les fonctionnalités sont maintenant figées.
La version stable devrait arriver aux environs du printemps 2009 ; que nous apportera-t-elle ?
Closures, namespaces, goto, optimisations, internationalisations... Finalement, une mise à jour "mineure" apportant un lot extrêmement important de nouveautés !
Ces slides sont ceux que j'ai présenté au forum PHP Paris 2008 organisé par l'AFUP.

Published in: Technology
  • Be the first to comment

PHP 5.3 : les nouveautés du futur si proche

  1. 1. Nouveautés PHP 5.3 – Pascal MARTIN « Que nous  réserve  l'avenir ? »
  2. 2. Nouveautés PHP 5.3 – Pascal MARTIN Nouveautés de PHP 5.3 The future is here! – almost
  3. 3. Nouveautés PHP 5.3 – Pascal MARTIN Qui suis-je ? ● Pascal MARTIN ● Expert technique PHP chez SQLI ● Membre de la Cellule Architecture PHP – Capitalisation – Veille technologique ● Blog perso ● http://blog.pascal-martin.fr/ – Articles techniques PHP & Javascript – Dont une série de 30 articles sur les Nouveautés de PHP 5.3
  4. 4. Nouveautés PHP 5.3 – Pascal MARTIN Introduction ● Versions de PHP ● 4.4.9 : Août 2008 – plus maintenu ! ● 5.0.0 : juillet 2004 ● 5.1.0 : Novembre 2005 ● 5.2.0 : Novembre 2006 – 5.2.6 : Mai 2008 ; 5.2.7 : Décembre 2008 – bientôt 5.2.8 ? ● Grand nombre de nouveautés attendues ! ● Pas au point de changer de version majeure ? ● PHP 6 est encore loin ! ● PHP 5.3 ● Versions « testables » : printemps 2008 ● 1ère version alpha : 1er août 2008
  5. 5. Nouveautés PHP 5.3 – Pascal MARTIN « Pack » d'exemples / tests ● Série d'exemples et de tests ● Couvrant la quasi-totalité des nouveautés de PHP 5.3 – Plus en détails que ce que je présenterai ici ● Téléchargeable depuis mon blog – http://blog.pascal-martin.fr/public/php-5.3/php-5.3-exemples.tar.bz2 – Mis à jour quand j'effectue de nouveaux test
  6. 6. Nouveautés PHP 5.3 – Pascal MARTIN E_DEPRECATED ● Nouveau niveau de rapport d'erreurs ● « E_DEPRECATED » ● Objectif – Identifier les fonctionnalités dépréciées – Qui seront probablement supprimées pour une prochaine version ● Pour PHP 6, typiquement
  7. 7. Nouveautés PHP 5.3 – Pascal MARTIN Constante magique __DIR__ ● Travail par rapport au répertoire où se trouve un fichier ● Inclusion d'un fichier .php require_once(dirname(__FILE__) . '/../mon-fichier.php'); ● Long à écrire, risque de fautes de frappe ● Évalué à l'exécution ● PHP 5.3 : nouvelle constante magique ● __DIR__ require_once(__DIR__ . '/../mon-fichier.php'); ● Évalué à la compilation – Plus rapide à exécuter ● Et plus court à écrire
  8. 8. Nouveautés PHP 5.3 – Pascal MARTIN Saut inconditionnel : « goto » ● Ajout de l'instruction « goto » ● Et de la notion de « label » (étiquette) echo '<p>a</p>'; goto c; echo '<p>b</p>'; c: echo '<p>c</p>'; ● A noter ● Pas de saut à l'intérieur d'une boucle / d'un switch ● Autorisé à l'intérieur d'un if / else (utilité ?) ● Pas de « goto $label; » ● Instructions « break » et « continue » non modifiées – Sortie de boucles imbriquées : « break 2; » – Pas de « break label; »
  9. 9. Nouveautés PHP 5.3 – Pascal MARTIN LSB – Late Static Binding ● PHP 5.2 : résolution statique à la compilation class Vehicule { public static function a() { echo '<pre>' . __CLASS__ . '</pre>';} // Etape 3 : quot;Vehiculequot; public static function b() {self::a();} // Etape 2 : PHP 5.2 : quot;selfquot; } class Voiture extends Vehicule { public static function a() {echo '<pre>' . __CLASS__ . '</pre>';} } Voiture::b(); // Etape 1 ● PHP 5.3 : résolution statique « tardive » class Vehicule { public static function a() {echo '<pre>' . __CLASS__ . '</pre>';} public static function b() {static::a();} // Etape 2 : PHP 5.3 : LSB : quot;staticquot; } class Voiture extends Vehicule { public static function a() { echo '<pre>' . __CLASS__ . '</pre>';} // Etape 3 : quot;Voiturequot; } Voiture::b(); // Etape 1 ● Conservation de « self » et de son comportement
  10. 10. Nouveautés PHP 5.3 – Pascal MARTIN Appels statiques dynamiques class A { public static function methodeStatique($p1) { ● PHP <= 5.2 echo quot;<pre>A::methodeStatique($p1)</pre>quot;; ● Parse Error } public function methode($p1) { echo quot;<pre>A::method($p1)</pre>quot;; } } $className = 'A'; ● PHP 5.3 $methodName = 'methode'; $obj = new $className(); ● Appels statiques $obj->$methodName('param1'); dynamiques possibles // A::methode(param1) $staticMethodName = 'methodeStatique'; $className:: $staticMethodName('param1'); // A::methodeStatique(param1) ● A noter aussi ● Ajout méthode magique « __callStatic » ● Equivalent statique de « __call »
  11. 11. Nouveautés PHP 5.3 – Pascal MARTIN Syntaxe NOWDOC ● Depuis PHP 4, syntaxe Heredoc $str = <<<END_OF_STRING <h1>Hello, world!</h1> <div> Démonstration syntaxe <strong>$syntaxe</strong> </div> END_OF_STRING; ● PHP 5.3 ajoute la syntaxe Nowdoc ● Simple-quotes : pas d'interpolation de variables $str = <<<'END_OF_STRING' <h1>Hello, world!</h1> <div> Démonstration syntaxe <strong>$syntaxe</strong> </div> END_OF_STRING; ● Doubles-quotes : Identique à Heredoc – Plus consistant avec Nowdoc simple-quotes – Mais : deux façons de faire la même chose
  12. 12. Nouveautés PHP 5.3 – Pascal MARTIN GC – Garbage Collector – 1 ● PHP <= 5.2 ● Références cycliques ● => non libération de la mémoire ● PHP 5.3 : Ajout Garbage Collector ● Fonctions « gc_* » ● Activé par défaut – Mais désactivable ● Intérêt ● Faciliter le développement de grosses applications – Batchs – Applications basées sur des frameworks – PHP-GTK ? ● PHP ne sert plus que pour du Web / des scripts légers
  13. 13. Nouveautés PHP 5.3 – Pascal MARTIN GC – Garbage Collector – 2 ● Rouge : Sans Garbage Collector ● Bleu : Avec Garbage Collector
  14. 14. Nouveautés PHP 5.3 – Pascal MARTIN Lambdas et Closures – 1 ● Ceux qui ont fait du Javascript connaitront ! ● PHP 5.3 introduit les « Lambdas » et « Closures » ● Fonction anonyme ● Création $func = function () { echo quot;<p>Hello, World!</p>quot;; }; ● Appel $func(); ● Fonction anonyme avec paramètre(s) $func = function ($param) { echo quot;<p>Hello, $param!</p>quot;; }; $func('there'); ● Appel possible via call_user_func[_array] ● Fonctions « anonymes », mais fonctions quand même !
  15. 15. Nouveautés PHP 5.3 – Pascal MARTIN Lambdas et Closures – 2 ● Exemple évident ● Utilisation d'une fonction anonyme comme fonction de callback $data = array('sacré coeur', 'champs elysée', 'tour eiffel'); $output = array_map(function ($item) { return ucwords($item); }, $data); var_dump($output); array 0 => string 'Sacré Coeur' (length=12) 1 => string 'Champs Elysée' (length=14) 2 => string 'Tour Eiffel' (length=11) ● Plus pratique que create_function ! – Plus rapide à l'exécution – Plus lisible – coloration syntaxique ! ● Évite la création de fonctions nommées, à usage unique
  16. 16. Nouveautés PHP 5.3 – Pascal MARTIN Lambdas et Closures – 3 ● « use » : Import d'une variable externe $var = 'World'; $func1 = function () { echo quot;<p>Hello, $var!</p>quot;; }; $func2 = function () use ($var) { echo quot;<p>Hello, $var!</p>quot;; }; $func1(); // Notice: Undefined variable: var … => Hello, ! $func2(); // Hello, World! ● Import en lecture-seule ● Ou par référence : ré-utilisation de « & » – Import en lecture-écriture $func2 = function () use (& $var) { echo quot;<p>Début 2 : $var</p>quot;; $var = 2; echo quot;<p>Fin 2 : $var</p>quot;; };
  17. 17. Nouveautés PHP 5.3 – Pascal MARTIN Lambdas et Closures – 4 ● Création d'une closure $func = function ($arg) { $compteur = $arg; // Copie privée, en lecture seule return function () use ($compteur) { return ++$compteur; }; }; $a1 = $func(10); $a2 = $func(50); echo 'a1 : ' . $a1() . quot;nquot;; // 11 echo 'a2 : ' . $a2() . quot;nquot;; // 51 echo 'a1 : ' . $a1() . quot;nquot;; // 11 echo 'a2 : ' . $a2() . quot;nquot;; // 51 echo 'a1 : ' . $a1() . quot;nquot;; // 11 echo 'a2 : ' . $a2() . quot;nquot;; // 51 ● Fonction interne force la conservation de la valeur de $compteur ● C'est le principe même d'une closure ! – Après Javascript, c'est maintenant possible en PHP !
  18. 18. Nouveautés PHP 5.3 – Pascal MARTIN Lambdas et Closures – 5 ● Même chose, en lecture-écriture $func = function ($arg) { $compteur = $arg; // Copie privée, en lecture / écriture return function () use (& $compteur) { return ++$compteur; }; }; $a1 = $func(10); $a2 = $func(50); echo 'a1 : ' . $a1() . quot;nquot;; // 11 echo 'a2 : ' . $a2() . quot;nquot;; // 51 echo 'a1 : ' . $a1() . quot;nquot;; // 12 echo 'a2 : ' . $a2() . quot;nquot;; // 52 echo 'a1 : ' . $a1() . quot;nquot;; // 13 echo 'a2 : ' . $a2() . quot;nquot;; // 53 ● $compteur conservée par la fonction interne ● $compteur importée par référence ● Accessible en lecture-écriture, donc – Comme les closures de Javascript
  19. 19. Nouveautés PHP 5.3 – Pascal MARTIN intl – Internationalisation – 1 ● Extension « intl » incluse en standard ● Option –enable-intl ● Objectif : faciliter l'internationalisation (« i18n ») et la localisation (« l10n ») d'applications – Afficher une date sur un site multi-lingue : « 31/12/2008 » ? « 2008-31-12 » ? « 12/31/2008 » ? – Et pour une monnaie : « 1,024.12 € » ? « $ 1.024,12 » ? ● Plusieurs nouvelles classes ● IntlDateFormatter ● NumberFormatter ● Locale ● Collator
  20. 20. Nouveautés PHP 5.3 – Pascal MARTIN Intl – Internationalisation – 2 ● Nombres / monnaies echo NumberFormatter::create('fr_FR', NumberFormatter::CURRENCY)- >format(123456789.987654) . quot;nquot;; echo NumberFormatter::create('en_US', NumberFormatter::CURRENCY)- >format(123456789.987654) . quot;nquot;; 123 456 789,99 € $123,456,789.99 ● Dates echo IntlDateFormatter::create('fr_FR', IntlDateFormatter::FULL, IntlDateFormatter::FULL)->format(time()) . quot;nquot;; echo IntlDateFormatter::create('zh-Hant-TW', IntlDateFormatter::FULL, IntlDateFormatter::FULL)->format(time(time())) . quot;nquot;; jeudi 9 octobre 2008 04:21:10 GMT+00:00 2008 年 10 月 9 日星期四 上午 04 時 21 分 10 秒 GMT+00:00 ● Messages $format_FR = 'Le {0,date,full} à {1,time,short}, {2,number,integer} pommes coûtent {3,number,currency}'; $data = array(time(), time(), 5, 3.1415); echo MessageFormatter::formatMessage('fr_FR', $format_FR, $data) . quot;nquot;; Le jeudi 9 octobre 2008 à 04:31, 5 pommes coûtent 3,14 €
  21. 21. Nouveautés PHP 5.3 – Pascal MARTIN Manipulation de dates date_default_timezone_set('Europe/Paris'); ● PHP >= 4.x $ts1 = strtotime('25/04/2008 13:30:00'); var_dump(date('Y-m-d', $ts1)); string '1970-01-01' (length=10) ● PHP >= 5.1.0 $date = date_create('25/04/2008 13:30:00'); var_dump($date); boolean false ● PHP >= 5.3 $date = date_create_from_format('d/m/Y H:i:s', '25/04/2008 13:30:00'); var_dump($date->format('Y-m-d')); string '2008-04-25' (length=10) ● Nous sommes français / francophones ● Non, nos utilisateurs ne connaissent pas le format de dates américain !
  22. 22. Nouveautés PHP 5.3 – Pascal MARTIN Opérateur ? : revu ● Opérateur ternaire ; syntaxe parfois redondante $blah = ($identifiant ? $identifiant : 'Erreur'); ● PHP 5.3 : nouvelle possibilité d'écriture ● condition ? : valeur si faux ● Si « condition » est vraie, retour du résultat de son évaluation – Sans dupliquer son écriture ● Sinon, retour de la valeur de droite var_dump(true ?: false); // bool(true) var_dump(true ? : false); // bool(true) (fonctionne avec des ' ' entre ? et :) var_dump(false ?: true); // bool(true) var_dump('glop' ?: ''); // string(4) quot;glopquot; var_dump(strlen('glop') ?: strlen('')); // int(4) var_dump(isset($a) ?: 10); // int(10) ($a non défini) $b = 'Hello, World!'; var_dump(isset($b) ?: 10); unset($b); // bool(true) var_dump('' ?: isset($a)); // bool(false) ($a non défini ; 2 valeurs fausses)
  23. 23. Nouveautés PHP 5.3 – Pascal MARTIN mysqlnd ● Bibliothèque spécialisée d'interface PHP ↔ MySQL ● Conçue spécialement pour PHP ; intégrée à PHP – Perspectives d'évolution – MAJ / correctifs en même temps que PHP ● Principaux avantages ● Plus rapide (20 à 30% plus rapide que libmysql) ● Amélioration de l'utilisation mémoire ● Fonctionnalités supplémentaires (statistiques) ● Driver intégré : pas de dépendance externe ● Pour le développeur ● Aucune modification : choix effectué à la compilation de PHP ● Brique « en-dessous » de mysql, mysqli, PDO
  24. 24. Nouveautés PHP 5.3 – Pascal MARTIN Phar : PHP Archive ● « PHP Archive » ● Équivalent des .jar du monde JAVA ● Regroupement de plusieurs fichiers en un seul ● Intégré à PHP 5.3 : indépendant de PEAR / PECL ● Manipulation de fichiers Phar ● Ajout d'un stream « phar » ● Inclusion de fichiers packagés au sein d'une Phar – Y compris d'un fichier vers l'autre ● Exemples de possibilités ● Distribution d'une application entière en un seul fichier – Pour les application CLI, et pour les applications Web ! – Comme installeur ? ● Framework packagé en un seul fichier ?
  25. 25. Nouveautés PHP 5.3 – Pascal MARTIN Ajouts à la SPL – 1 ● Itérateurs au niveau du système de fichiers ● FileSystemIterator, GlobIterator $motif = __DIR__ . '/*.php'; $fichiers = new GlobIterator($motif); foreach ($fichiers as $fichier) { // $fichier est une instance de SplFileInfo echo $fichier->getPathname() . ' : ' . number_format($fichier->getSize(), 0, '.', ',') . quot; octetsnquot;; } /home/php/php53/spl/FilesystemIterator-5.3-1.php : 1,540 octets /home/php/php53/spl/GlobIterator-5.3-1.php : 296 octets /home/php/php53/spl/SplDoublyLinkedList-5.3-1.php : 138 octets /home/php/php53/spl/SplMaxHeap-5.3-1.php : 179 octets /home/php/php53/spl/SplMinHeap-5.3-1.php : 179 octets /home/php/php53/spl/SplMinHeap-5.3-2.php : 494 octets /home/php/php53/spl/SplMinHeap-5.3-3.php : 883 octets /home/php/php53/spl/SplPriorityQueue-5.3-1.php : 301 octets /home/php/php53/spl/SplQueue-5.3-1.php : 755 octets /home/php/php53/spl/SplStack-5.3-1.php : 718 octets
  26. 26. Nouveautés PHP 5.3 – Pascal MARTIN Ajouts à la SPL – 2 ● Nouvelles structures de données ● SplStack, SplQueue, SplPriorityQueue, SplDoublyLinkedList, SplMinHeap, SplMaxHeap, … ● Attention : deux modes de fonctionnement différents – Classes héritant de SplDoublyLinkedList ne se vident pas lors du parcours – Classes héritant de SplHeap se vident lors du parcours $q = new SplPriorityQueue(); $q->setExtractFlags(SplPriorityQueue::EXTR_BOTH); $q->insert('Mr A', 10); $q->insert('Mr B', 30); $q->insert('Mr C', -1); $q->insert('Mr D', 5); foreach ($q as $element) { var_dump($element); // /! le parcours enlève les éléments de la queue ! } array 'data' => string 'Mr B' (length=4) 'priority' => int 30 array 'data' => string 'Mr A' (length=4) 'priority' => int 10 array 'data' => string 'Mr D' (length=4) 'priority' => int 5 array 'data' => string 'Mr C' (length=4) 'priority' => int -1
  27. 27. Nouveautés PHP 5.3 – Pascal MARTIN Espaces de noms – 1 ● Espaces de noms, « namespace » ● Fonctionnalité très attendue ● Grand sujet de débats / discussions enflammées ● Raison de l'alpha3 et des reports de sa sortie ● Pourquoi des namespaces ? ● Noms de classes trop longs ● Conflits – Redéfinition de classes, de fonctions – Dans les bibliothèques ● Séparateur de namespace : « » ● ET PAS « :: » ! ● Contrairement à ce qui existait en versions <= alpha2
  28. 28. Nouveautés PHP 5.3 – Pascal MARTIN Espaces de noms – 2 ● Déclaration d'un namespace ● Instruction « namespace » + nom de l'espace ● Tout ce qui suit, dans le fichier, est dans l'espace de noms – Fonctions, constantes, classes <?php namespace LIB; function a() { var_dump('LIBa'); } function b() { var_dump('LIBb'); } ● Utilisation (autre fichier) <?php require_once(__DIR__ . '/lib.php'); LIBa(); LIBb();
  29. 29. Nouveautés PHP 5.3 – Pascal MARTIN Espaces de noms – 3 ● Attention ● « namespace » : 1ère instruction d'un fichier ! – Sinon => Fatal Error ● «  » est aussi le caractère d'échappement – Dans les chaînes de caractères ● Entre double-quotes, surtout ● Pour les instanciations dynamiques de classes ● Espaces de noms : contenu entre accolades ● C'est possible ;-) <?php namespace LIB { function a() { var_dump('LIBa'); } function b() { var_dump('LIBb'); } }
  30. 30. Nouveautés PHP 5.3 – Pascal MARTIN Espaces de noms – 4 ● Organisation des fichiers ● Espace de noms sur plusieurs fichiers – Frameworks, bibliothèques : plusieurs classes ● Plusieurs espaces de noms dans un même fichier – Fusion de plusieurs fichiers PHP en un seul ● Noms composés ● « » peut être inclus dans un nom de namespace namespace MonNSA; ● Nouvelle constante magique ● __NAMESPACE__ – Nom de l'espace de noms où elle est utilisée – Chaîne vide en dehors de tout namespace ● Espace de noms « global » : «  »
  31. 31. Nouveautés PHP 5.3 – Pascal MARTIN Espaces de noms – 5 ● Import d'un espace de noms : « use … as … » ● Défini un alias use NAMESPACE_AU_NOM_TRES_LONG as A; $a = new AClassA(); $a = new NAMESPACE_AU_NOM_TRES_LONGClassA(); ● Les deux écriture reviennent au même, en interne ● Même chose avec un NS au nom composé ● use peut aussi permettre de déclarer un alias de classe use NSNOMCOMPOSEClassA as MyClass; ● NS en plusieurs parties : use sans as use NSNOMCOMPOSE; ● Défini « COMPOSE » comme alias de « NSNOMCOMPOSE » ● Attention : uniquement si nom composé !
  32. 32. Nouveautés PHP 5.3 – Pascal MARTIN Espaces de noms – 6 ● Autoloading ● Nom de l'espace de noms est compris dans le nom interne de la classe – Si fichiers bien organisés => pas de problème ● Type-hinting ● Résolution ● En premier, chargement depuis le NS courant ● Puis – Pour les classes : autoload – Pour les fonctions / constantes : chargement depuis l'espace de noms global ● Pas de chargement depuis l'espace de noms global pour les classes !
  33. 33. Nouveautés PHP 5.3 – Pascal MARTIN Divers ● getopt ● Support natif des options longues, sous tous OS ● fileinfo ● Déterminer le type d'un fichier ● Configuration par répertoire, par fichier .ini ● En mode CGI uniquement ● Profiling XLST ● Nouvelles fonctions SSL ● Objectif : implémentation d'openId en PHP ● MAJ SQLite ● Plus de tests unitaires automatisés ● Corrections de bugs
  34. 34. Nouveautés PHP 5.3 – Pascal MARTIN Performances ● Nombreuses améliorations orientées performances ● Malgré les nouveautés ● Gain de 10 à 20% pour des applications « répandues » ● Drupal, TYPO3, Wordpress, ... ● Récapitulatif ● PHP 4 – Le plus lent ● PHP 5.3 – Plus rapide que toutes les autres versions 5.x ● PHP 6 – Par curiosité
  35. 35. Nouveautés PHP 5.3 – Pascal MARTIN Conclusion : Le futur est là... ● Nouveautés et améliorations ● Plein ● Potentiellement intéressantes ! ● Pas de révolution ● Pas / peu de cassage de fonctionnalités existantes ● Théoriquement, passage de 5.2.x à 5.3 peu risqué – Testez, Expérimentez ! – Bonnes habitudes : à prendre ! – Mauvaises habitudes : pas encore là ! – Faites des retours : une des forces de PHP = communauté ! ● Support par les IDE / outils ● Pas encore :-( ● Ou pas suffisamment...
  36. 36. Nouveautés PHP 5.3 – Pascal MARTIN … ou presque ! ● Version alpha3 tout juste sortie ● Fonctionnalités figées ● Date pour la version finale ? ● Printemps 2009 ? Plus tard ? ● « Demandez à Lukas Smith » (conf. de 16h30) ● PHP 5.3 et projets « réels » ? ● Zend Framework 2.0 ? Doctrine 2.0 ? ● Et pour nos projets ? ● Et pour nos clients / pour vous ? ● PHP 5.et-demie ? ● PHP 6 n'est toujours pas pour demain... ● … Nombreuses améliorations rapportées en PHP 5.3 !
  37. 37. Nouveautés PHP 5.3 – Pascal MARTIN Questions ?
  38. 38. Nouveautés PHP 5.3 – Pascal MARTIN Merci à tous, Bon appétit !

×