Your SlideShare is downloading. ×
PHP5.4 | WebEvent Lyon   1PHP 5.4 est arrivé
PHP5.4 | WebEvent Lyon   2                    Who is talkingJulien PAULIArchitecture système & logiciel   Covoiturage.frAu...
PHP5.4 | WebEvent Lyon   3                   PHP 5.4 - 01/03/2012 3 ans de développement                        Totals gro...
PHP5.4 | WebEvent Lyon   4Nouveau processus de publication               -        Release process
PHP5.4 | WebEvent Lyon        5           Nouveau processus de publication“PHP releases have always been done spontaneousl...
PHP5.4 | WebEvent Lyon   6         Un calendrier plus précisUne durée de vie de 3 ans  Une mineure par an
PHP5.4 | WebEvent Lyon   7      Un calendrier compréhensif2 majeures peuvent cohéxister  Comme PHP4 & PHP5 à leur époque  ...
PHP5.4 | WebEvent Lyon   8On ne casse pas tout             Majeures (PHP 5)                BC breaks possibles            ...
PHP5.4 | WebEvent Lyon   9Un nouveau processus de développement
PHP5.4 | WebEvent Lyon   10                 PHP passe à GitPassage à GitServeur git hebergé sur php.net   Pour des raisons...
PHP5.4 | WebEvent Lyon   11PHP 5.4 : nouveautés techniques
PHP5.4 | WebEvent Lyon   12        PHP 5.4, un peu de ménageDites au revoir à :   safe_mode   register_globals, import_req...
PHP5.4 | WebEvent Lyon   13          PHP 5.4, ajouts en vracCompatibilité avec autoconf 2.59+ (obligatoire)MySQLnd activé ...
PHP5.4 | WebEvent Lyon   14Le meilleur de PHP 5.4 … ??
PHP5.4 | WebEvent Lyon   15       Performances !!(~+55% bruts, ~+20% constatés)
PHP5.4 | WebEvent Lyon   16               Performances de PHP5.4La plus belle amélioration de PHP 5.4 est sous le manteau ...
PHP5.4 | WebEvent Lyon   17  PHP 5.4 bench<--PHP 5.3 : 25.8 secPHP 5.4 : 9.9sec -->
PHP5.4 | WebEvent Lyon   18           PHP 5.4, essai PHPUnitLançons la suite de tests de Symfony2   Symfony2 master   PHPU...
PHP5.4 | WebEvent Lyon   19         PHP 5.4 – sort open tags<?= est toujours disponible quel que soit le niveau desort_ope...
PHP5.4 | WebEvent Lyon   20                  Serveur web embarquéPas pour de la production ;-)   Possibilité dutiliser un ...
PHP5.4 | WebEvent Lyon   21                        CallableNouveau typage : "callable"   "callable" devient donc un mot re...
PHP5.4 | WebEvent Lyon   22       Quest ce qui est "callable" ?Toute callback PHP :   some-existing-function   array($some...
PHP5.4 | WebEvent Lyon   23             Short Array SyntaxPython or Javascript anyone ?$cfg = array(loglevel => 3,        ...
PHP5.4 | WebEvent Lyon   24             Arrays dereferencingOui, ça cétait très attendu ...function foo() {   return array...
PHP5.4 | WebEvent Lyon   25           "new" fluent interfaceOn aime, on naime pas, on aime peut-être ...    $obj = (new My...
PHP5.4 | WebEvent Lyon   26Invocations statiques dynamiques        echo Bar::{foo}();
PHP5.4 | WebEvent Lyon   27                            WTF ? OMG !       I love that           (I really do)class Foo {   ...
PHP5.4 | WebEvent Lyon   28   Notation binaire pour les entiersCest vrai que ça manquait ;-)   0b var_dump( 0b1010 + (0b01...
PHP5.4 | WebEvent Lyon   29                          TraitsMixins, héritage horizontal, héritage multiple   Appelez-les co...
PHP5.4 | WebEvent Lyon   30                                   Traits                      trait ToArray {                 ...
PHP5.4 | WebEvent Lyon   31                                Closures        Les closures supportent (enfin) $this          ...
PHP5.4 | WebEvent Lyon   32                    Domaine des closures       Suite au support de $this, les closures peuvent ...
PHP5.4 | WebEvent Lyon   33                         JSONSerializable    Nouvelle interface       Fonctionnement "à la __to...
PHP5.4 | WebEvent Lyon   34      ObjectOriented SessionHandlerEnfin !  MySessionHandler implements SessionHandlerInterface...
PHP5.4 | WebEvent Lyon   35Breaks !
PHP5.4 | WebEvent Lyon   36                             BreaksOn essaye de ne pas casser, mais par-ci par-là …   Content-T...
PHP5.4 | WebEvent Lyon   37Questions ?
Upcoming SlideShare
Loading in...5
×

WebEvent Lyon 2012 - PHP5.4

3,113

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,113
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "WebEvent Lyon 2012 - PHP5.4"

  1. 1. PHP5.4 | WebEvent Lyon 1PHP 5.4 est arrivé
  2. 2. PHP5.4 | WebEvent Lyon 2 Who is talkingJulien PAULIArchitecture système & logiciel Covoiturage.frAuteur (Eyrolles)Contributeur OSShttp://julien-pauli.developpez.comjpauli@php.net@julienpauli
  3. 3. PHP5.4 | WebEvent Lyon 3 PHP 5.4 - 01/03/2012 3 ans de développement Totals grouped by language (dominant language first):SLOC Directory ansic: 657202 (93.45%) php: 22407 (3.19%)546814 ext sh: 11150 (1.59%)77699 Zend xml: 5803 (0.83%)34310 sapi cpp: 2432 (0.35%)21233 main exp: 1514 (0.22%)3523 TSRM yacc: 1269 (0.18%)3410 win32 pascal: 664 (0.09%) awk: 537 (0.08%) perl: 315 (0.04%)
  4. 4. PHP5.4 | WebEvent Lyon 4Nouveau processus de publication - Release process
  5. 5. PHP5.4 | WebEvent Lyon 5 Nouveau processus de publication“PHP releases have always been done spontaneously, in a somehowchaotic way. Individual(s) decided when a release will happen and what couldor could fit in. Release managers role are unclear and the way to nominatethem is not clearly defined either.The goals of this RFC aim to solve these issues while giving to us, our usersand 3rd parties (distributions, contributors, etc.) more visibility and the abilityto actually have a roadmap, or plan developments.” https://wiki.php.net/rfc/releaseprocess
  6. 6. PHP5.4 | WebEvent Lyon 6 Un calendrier plus précisUne durée de vie de 3 ans Une mineure par an
  7. 7. PHP5.4 | WebEvent Lyon 7 Un calendrier compréhensif2 majeures peuvent cohéxister Comme PHP4 & PHP5 à leur époque Simplifier les migrations
  8. 8. PHP5.4 | WebEvent Lyon 8On ne casse pas tout Majeures (PHP 5) BC breaks possibles Mineures (PHP 5.4) nouvelles fonctionnalités Mouvements dextensions (PECL ↔ Core) Pas de BC break Révisions (PHP 5.4.1) Bug fixes seulement
  9. 9. PHP5.4 | WebEvent Lyon 9Un nouveau processus de développement
  10. 10. PHP5.4 | WebEvent Lyon 10 PHP passe à GitPassage à GitServeur git hebergé sur php.net Pour des raisons de sécurité et de gestion des utilisateursMirroir sur githubByebye SVN
  11. 11. PHP5.4 | WebEvent Lyon 11PHP 5.4 : nouveautés techniques
  12. 12. PHP5.4 | WebEvent Lyon 12 PHP 5.4, un peu de ménageDites au revoir à : safe_mode register_globals, import_request_variables() register_long_arrays allow_call_time_pass_reference ( foo(&$bar) ) y2k_compliance magic_quotes*** session_register(), session_unregister(), session_is_registered() ext/sqlite
  13. 13. PHP5.4 | WebEvent Lyon 13 PHP 5.4, ajouts en vracCompatibilité avec autoconf 2.59+ (obligatoire)MySQLnd activé par défaut (et non plus libmysql)http_response_code()session_status()ReflectionClass::newInstanceWithoutConstructor()Dtrace support (mac & Solaris)E_ALL contient E_STRICT$_SERVER[REQUEST_TIME_FLOAT]http://www.php.net/migration54
  14. 14. PHP5.4 | WebEvent Lyon 14Le meilleur de PHP 5.4 … ??
  15. 15. PHP5.4 | WebEvent Lyon 15 Performances !!(~+55% bruts, ~+20% constatés)
  16. 16. PHP5.4 | WebEvent Lyon 16 Performances de PHP5.4La plus belle amélioration de PHP 5.4 est sous le manteau http://svn.php.net/viewvc/php/php-src/branches/PHP_5_4/NEWS- Improved Zend Engine, performance tweaks and optimizations: (Dmitry) . Inlined most probable code-paths for arithmetic operations directly into executor. . Eliminated unnecessary iterations during request startup/shutdown. . Changed $GLOBALS into a JIT autoglobal, so its initialized only if used. (this may affect opcode caches!) . Improved performance of @ (silence) operator. . Simplified string offset reading. $str[1][0] is now a legal construct. . Added caches to eliminate repeatable run-time bindings of functions, classes, constants, methods and properties. . Added concept of interned strings. All strings constants known at compile time are allocated in a single copy and never changed. . Added an optimization which saves memory and emalloc/efree calls for empty HashTables. (Stas, Dmitry)[...]
  17. 17. PHP5.4 | WebEvent Lyon 17 PHP 5.4 bench<--PHP 5.3 : 25.8 secPHP 5.4 : 9.9sec -->
  18. 18. PHP5.4 | WebEvent Lyon 18 PHP 5.4, essai PHPUnitLançons la suite de tests de Symfony2 Symfony2 master PHPUnit 3.6.3
  19. 19. PHP5.4 | WebEvent Lyon 19 PHP 5.4 – sort open tags<?= est toujours disponible quel que soit le niveau desort_open_tags <?= $foo; ?>
  20. 20. PHP5.4 | WebEvent Lyon 20 Serveur web embarquéPas pour de la production ;-) Possibilité dutiliser un routeur (script PHP)http://www.php.net/manual/fr/features.commandline.webserver.php
  21. 21. PHP5.4 | WebEvent Lyon 21 CallableNouveau typage : "callable" "callable" devient donc un mot reservé class PubSub { // code...... public function subscribe($name, callable $cb) { if (!isset($this->callbacks[$name])) { $this->callbacks[$name] = array(); } $this->callbacks[$name] = $cb; } } $ps = new PubSub(); $ps->subscribe(foo, function() { echo test; }); $ps->subscribe(foo, bla); // catchable fatal error
  22. 22. PHP5.4 | WebEvent Lyon 22 Quest ce qui est "callable" ?Toute callback PHP : some-existing-function array($someobj, some-public-method) array(someClass, some-static-public-method) function () { };Notez cette nouvelle procédure dinvocation : class Hello { public function world($x) { return "hello $x"; } } $f = array(new Hello, world); var_dump($f(foo)); // hello foo
  23. 23. PHP5.4 | WebEvent Lyon 23 Short Array SyntaxPython or Javascript anyone ?$cfg = array(loglevel => 3, database => array(username => foo, password => secret) );$cfg = [loglevel => 3, database => [username => foo, password => secret] ];
  24. 24. PHP5.4 | WebEvent Lyon 24 Arrays dereferencingOui, ça cétait très attendu ...function foo() { return array(foo=>bar);}$var = foo()[foo];
  25. 25. PHP5.4 | WebEvent Lyon 25 "new" fluent interfaceOn aime, on naime pas, on aime peut-être ... $obj = (new MyClass)->someMethod();
  26. 26. PHP5.4 | WebEvent Lyon 26Invocations statiques dynamiques echo Bar::{foo}();
  27. 27. PHP5.4 | WebEvent Lyon 27 WTF ? OMG ! I love that (I really do)class Foo { public static function bar() { return [wtf]; } public function wtf() { return omg; }}$meth = bar;var_dump( (new Foo)->{Foo::$meth()[0]}() ); // omg
  28. 28. PHP5.4 | WebEvent Lyon 28 Notation binaire pour les entiersCest vrai que ça manquait ;-) 0b var_dump( 0b1010 + (0b01<<2) ); // 14 http://julien-pauli.developpez.com/tutoriels/php/bool-op/
  29. 29. PHP5.4 | WebEvent Lyon 29 TraitsMixins, héritage horizontal, héritage multiple Appelez-les comme vous voulez Aimez-les, ou pas …http://www.php.net/traits trait ToArray { public function toArray() { return $this->array; } }
  30. 30. PHP5.4 | WebEvent Lyon 30 Traits trait ToArray { public function toArray() { return $this->array; } }class MainConfig { class Config extends MainConfig { private $array = [foo]; use ToArray; public function config() { } private $array = [bar];} } $config = new Config; echo $config->toArray()[0]; // bar
  31. 31. PHP5.4 | WebEvent Lyon 31 Closures Les closures supportent (enfin) $this Byebye $that et autres $selfclass A { private $value = 1; function firstGetter($name) { return function() use ($name) { $a = new A(); return $this->$name; }; $firstGetter = $a->firstGetter(value); } echo $firstGetter(); // 1 function secondGetter($name) { return function($name) { $secondGetter = $a->secondGetter(); return $this->$name; echo $secondGetter(value); //1 }; }}
  32. 32. PHP5.4 | WebEvent Lyon 32 Domaine des closures Suite au support de $this, les closures peuvent maintenant changer de domaine "Rebinding" "Baladez" vos closuresclass A { $a = new A; private $value = 1; $b = new B; function getter() { $closureA = $a->getter(); return function() { echo $closureA(); // 2 return ++$this->value;}; } $closureB = $closureA->bindTo($b, $b);} echo $closureB(); // 43class B extends A { private $value = 42;}
  33. 33. PHP5.4 | WebEvent Lyon 33 JSONSerializable Nouvelle interface Fonctionnement "à la __toString()"class Foo implements JsonSerializable { private $name = PHP; public function jsonSerialize() { return "I love $this->name"; }}echo json_encode(new Foo);
  34. 34. PHP5.4 | WebEvent Lyon 34 ObjectOriented SessionHandlerEnfin ! MySessionHandler implements SessionHandlerInterface { int close ( void ) int destroy ( string $sessionid ) int gc ( int $maxlifetime ) int open ( string $save_path , string $sessionid ) string read ( string $sessionid ) int write ( string $sessionid , string $sessiondata ) } session_set_save_handler(new MySessionHandler);
  35. 35. PHP5.4 | WebEvent Lyon 35Breaks !
  36. 36. PHP5.4 | WebEvent Lyon 36 BreaksOn essaye de ne pas casser, mais par-ci par-là … Content-Type en sortie passe à UTF-8 (avant ISO) break $foo; et continue $bar; ont été abandonnées Array to string conversions émettent un notice $a = array(foo); $b = $a . "heyy"; /* $b = Arrayheyy */ Notice: Array to string conversion Les mots trait, callable et insteadof sont désormais réservés Les constructeurs abstraits peuvent forcer les paramètres du constructeur filsabstract class A { abstract function __construct($a); }class B extends A { function __construct($a, $b) { } } /* fatal error */
  37. 37. PHP5.4 | WebEvent Lyon 37Questions ?

×