nAcademy  Le 26 février 2015 Neuros ­ 
PHP 7
 
Think php7  
Christophe Villeneuve
nAcademy  Le 26 février 2015 Neuros ­ 
Aujourd'hui...
● Situation actuelle
● Le futur
● PHP 7
Thank's Rasmus Lerdorf
2015 ...
nAcademy  Le 26 février 2015 Neuros ­ 
Qui... est Christophe Villeneuve ?
<<
nAcademy  Le 26 février 2015 Neuros ­ 
Situation actuelle
Picture hellosct1 : Pyramide elePHPant
nAcademy  Le 26 février 2015 Neuros ­ 
➢
PHP 5.2 ✔
 The END 2010
PHP (1/6)
nAcademy  Le 26 février 2015 Neuros ­ 
➢PHP 5.2
➢PHP 5.3
✔ De 2009 à Août 2014
✔ ChangeLog
✔ Namespace
✔ Etc.
PHP (2/6)
nAcademy  Le 26 février 2015 Neuros ­ 
➢PHP 5.2
➢PHP 5.3
➢PHP 5.4
✔Dispo Mars 2012 
✔ChangeLog
✔ Les traits
✔ Etc.
PHP (3/...
nAcademy  Le 26 février 2015 Neuros ­ 
➢PHP 5.2
➢PHP 5.3
➢PHP 5.4
➢PHP 5.5
✔ Dispo juin 2013
✔ ChangeLog
✔ Générators
✔ Op...
nAcademy  Le 26 février 2015 Neuros ­ 
➢PHP 6.0
✔ No Comment
Screen Hidden
nAcademy  Le 26 février 2015 Neuros ­ 
➢PHP 5.2
➢PHP 5.3
➢PHP 5.4
➢PHP 5.5
➢PHP 5.6
✔ Dispo Août 2014 
✔ Variadics
✔ Funct...
nAcademy  Le 26 février 2015 Neuros ­ 
➢PHP 5.2
➢PHP 5.3
➢PHP 5.4
➢PHP 5.5
➢PHP 5.6
✔ Dispo Septembre 2015
✔ Next changeLo...
nAcademy  Le 26 février 2015 Neuros ­ 
+ =
5 + 1 = 7
nAcademy  Le 26 février 2015 Neuros ­ 
PHP Alternative Implementations
Source : https://wiki.php.net/rfc/php7_57_roadmap
●...
nAcademy  Le 26 février 2015 Neuros ­ 
Roadmap
Source : https://wiki.php.net/rfc/php7_57_roadmap
nAcademy  Le 26 février 2015 Neuros ­ 
Les changements
? yes
A whale
(Une baleine)
Picture hellosct1 : Tadoussac 2011 – el...
nAcademy  Le 26 février 2015 Neuros ­ 
Features
● :­D
– PHP Next Generation
– Modification structure 
données
– Nouvelle g...
nAcademy  Le 26 février 2015 Neuros ­ 
●
Structure intermédiaire dans le process de compilation
 → gain de performance et ...
nAcademy  Le 26 février 2015 Neuros ­ 
Null Coalesce Operator
● Modifie le comportement de l'opérateur ?
 → fonction isset...
nAcademy  Le 26 février 2015 Neuros ­ 
Unicode Codepoint Escape Syntax
● Utilisation de séquences Unicode dans les chaînes...
nAcademy  Le 26 février 2015 Neuros ­ 
Introduce session_start()
● Ajout d'une option
● Lecture seule 
– Un moyen rapide d...
nAcademy  Le 26 février 2015 Neuros ­ 
Catchable 
● 'call to a member function of a non­object'
● Pour éviter d'obtenir un...
nAcademy  Le 26 février 2015 Neuros ­ 
Uniform variable Syntax
● Uniformisation de la Syntax variable
● But : Atteindre la...
nAcademy  Le 26 février 2015 Neuros ­ 
Return Type Declarations
● Possibilité de spécifier un type de retour 
 → pour les ...
nAcademy  Le 26 février 2015 Neuros ­ 
Named parameters
● Nommés les paramètres
● Exemple
// Remplit un tableau avec une m...
nAcademy  Le 26 février 2015 Neuros ­ 
Et...
● Beaucoup d'autres…. RFC…. pour PHP 7.0
https://wiki.php.net/rfc#php_70
Pict...
nAcademy  Le 26 février 2015 Neuros ­ 
Features en cours (Votes/Discussions)
● Exceptions in the engine (for PHP 7)
– Perm...
nAcademy  Le 26 février 2015 Neuros ­ 
Performance
Picture EL Roubio – http://www.elroubio.net
nAcademy  Le 26 février 2015 Neuros ­ 
Configuration
● VM Debian 7 1GB RAM, 1 core, SSD
ulabox.com symfony 2 index / produ...
nAcademy  Le 26 février 2015 Neuros ­ 
Résultat
Réalisation 31/01/2015 ­ Source : https://speakerdeck.com/acasademont/php7...
nAcademy  Le 26 février 2015 Neuros ­ 
Merci
Questions ?
@hellosct1
@neuro_paris
Sources 
­ Pierre Joye
­ Albert Casademon...
Prochain SlideShare
Chargement dans…5
×

PHP 7 - Think php7

1 605 vues

Publié le

Présentation à la nAcademy (Février 2015) de Neuros : PHP7 - Think PHP 7 par Christophe Villeneuve

Publié dans : Internet
0 commentaire
3 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 605
Sur SlideShare
0
Issues des intégrations
0
Intégrations
289
Actions
Partages
0
Téléchargements
22
Commentaires
0
J’aime
3
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

PHP 7 - Think php7

  1. 1. nAcademy  Le 26 février 2015 Neuros ­  PHP 7   Think php7   Christophe Villeneuve
  2. 2. nAcademy  Le 26 février 2015 Neuros ­  Aujourd'hui... ● Situation actuelle ● Le futur ● PHP 7 Thank's Rasmus Lerdorf 2015  20 ans PHP
  3. 3. nAcademy  Le 26 février 2015 Neuros ­  Qui... est Christophe Villeneuve ? <<
  4. 4. nAcademy  Le 26 février 2015 Neuros ­  Situation actuelle Picture hellosct1 : Pyramide elePHPant
  5. 5. nAcademy  Le 26 février 2015 Neuros ­  ➢ PHP 5.2 ✔  The END 2010 PHP (1/6)
  6. 6. nAcademy  Le 26 février 2015 Neuros ­  ➢PHP 5.2 ➢PHP 5.3 ✔ De 2009 à Août 2014 ✔ ChangeLog ✔ Namespace ✔ Etc. PHP (2/6)
  7. 7. nAcademy  Le 26 février 2015 Neuros ­  ➢PHP 5.2 ➢PHP 5.3 ➢PHP 5.4 ✔Dispo Mars 2012  ✔ChangeLog ✔ Les traits ✔ Etc. PHP (3/6)
  8. 8. nAcademy  Le 26 février 2015 Neuros ­  ➢PHP 5.2 ➢PHP 5.3 ➢PHP 5.4 ➢PHP 5.5 ✔ Dispo juin 2013 ✔ ChangeLog ✔ Générators ✔ OpCache ✔ Principalement la sécurité PHP (4/6)
  9. 9. nAcademy  Le 26 février 2015 Neuros ­  ➢PHP 6.0 ✔ No Comment Screen Hidden
  10. 10. nAcademy  Le 26 février 2015 Neuros ­  ➢PHP 5.2 ➢PHP 5.3 ➢PHP 5.4 ➢PHP 5.5 ➢PHP 5.6 ✔ Dispo Août 2014  ✔ Variadics ✔ Function fn ($id,$params); ✔ Splat Operator ✔ Function test (arg1, arg2=null) ✔ Operator ✔ echo 2 xx 3 ; // 8 ✔ Nice speed bump  ✔ Etc. PHP (5/6)
  11. 11. nAcademy  Le 26 février 2015 Neuros ­  ➢PHP 5.2 ➢PHP 5.3 ➢PHP 5.4 ➢PHP 5.5 ➢PHP 5.6 ✔ Dispo Septembre 2015 ✔ Next changeLog ✔ ... ➢PHP 5.7 PHP (6/6)
  12. 12. nAcademy  Le 26 février 2015 Neuros ­  + = 5 + 1 = 7
  13. 13. nAcademy  Le 26 février 2015 Neuros ­  PHP Alternative Implementations Source : https://wiki.php.net/rfc/php7_57_roadmap ● PHP 7 – PHP Next Generation (PHPNG) ● HHVM – Code natif ● Recki­ct – Code natif ● Phalanger – .net engine
  14. 14. nAcademy  Le 26 février 2015 Neuros ­  Roadmap Source : https://wiki.php.net/rfc/php7_57_roadmap
  15. 15. nAcademy  Le 26 février 2015 Neuros ­  Les changements ? yes A whale (Une baleine) Picture hellosct1 : Tadoussac 2011 – elePHPant VS whale
  16. 16. nAcademy  Le 26 février 2015 Neuros ­  Features ● :­D – PHP Next Generation – Modification structure  données – Nouvelle gestion de  mémoire – Etc ● :­(  – Ext/MySQL – Ext/ereg – ASP Style Tags <% ou <%= et %> – Etc. :­( Source : https://wiki.php.net/rfc/remove_deprecated_functionality_in_php7
  17. 17. nAcademy  Le 26 février 2015 Neuros ­  ● Structure intermédiaire dans le process de compilation  → gain de performance et au niveau mémoire ● Améliore la qualité du code ● Position avant OpCode <?php //aucun Source : https://wiki.php.net/rfc/abstract_syntax_tree Abstract syntax tree
  18. 18. nAcademy  Le 26 février 2015 Neuros ­  Null Coalesce Operator ● Modifie le comportement de l'opérateur ?  → fonction isset() en automatique ● Disponible  – Dans une chaîne  – Dans un appel de méthode / fonction <?php //Avant $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; //PHP 7.0 $username = $_GET['user'] ?? 'nobody'; Source : https://wiki.php.net/rfc/isset_ternary
  19. 19. nAcademy  Le 26 février 2015 Neuros ­  Unicode Codepoint Escape Syntax ● Utilisation de séquences Unicode dans les chaînes  de caractères ● { et }   code de caractères ← lisibilité + pas de limite au nombre de caractères Source : https://wiki.php.net/rfc/unicode_escape <?php echo "u{202E}Reversed text"; // outputs Reversed text echo "mau{00F1}ana"; // pre-composed character ñ echo "manu{0303}ana"; // "n" with combining ~ character (U+0303)
  20. 20. nAcademy  Le 26 février 2015 Neuros ­  Introduce session_start() ● Ajout d'une option ● Lecture seule  – Un moyen rapide de lire les données de la session lorsque la mise à jour n'est  pas nécessaire ● Ecriture en option – Les données ne sont pas écrites si elles sont identiques Source : https://wiki.php.net/rfc/session-lock-ini <?php session_start(array('lazy_write'=False));
  21. 21. nAcademy  Le 26 février 2015 Neuros ­  Catchable  ● 'call to a member function of a non­object' ● Pour éviter d'obtenir une erreur non­fatale – E_RECOVERABLE_ERROR  ● Cela se produit à chaque fois qu'une méthode est appelée  sur autre chose qu'un objet Source : https://wiki.php.net/rfc/catchable-call-to-member-of-non-object <?php set_error_handler(function($code,$message) { var_dump($code, $message); }); $x= null; var_dump($x->method()); echo "Aliven";
  22. 22. nAcademy  Le 26 février 2015 Neuros ­  Uniform variable Syntax ● Uniformisation de la Syntax variable ● But : Atteindre la sémantique pour certaines  constructions variables Source : https://wiki.php.net/rfc/uniform_variable_syntax // old // new $$foo['bar']['baz'] ${$foo['bar']['baz']} ($$foo)['bar']['baz'] $foo->$bar['baz'] $foo->{$bar['baz']} ($foo->$bar)['baz'] $foo->$bar['baz']() $foo->{$bar['baz']}() ($foo->$bar)['baz']() Foo::$bar['baz']() Foo::{$bar['baz']}() (Foo::$bar)['baz']()
  23. 23. nAcademy  Le 26 février 2015 Neuros ­  Return Type Declarations ● Possibilité de spécifier un type de retour   → pour les fonctions et méthodes Source : https://wiki.php.net/rfc/return_types <?php // retourne toujours un tableau function foo(): array { return []; }
  24. 24. nAcademy  Le 26 février 2015 Neuros ­  Named parameters ● Nommés les paramètres ● Exemple // Remplit un tableau avec une même valeur array_fill(start, num, value) Source : https://wiki.php.net/rfc/named_params <?php // Actuellement array_fill(0, 100, 42); // Possibilité array_fill(start_index => 0, num => 100, value => 42); // ou array_fill(value => 42, num => 100, start_index => 0);
  25. 25. nAcademy  Le 26 février 2015 Neuros ­  Et... ● Beaucoup d'autres…. RFC…. pour PHP 7.0 https://wiki.php.net/rfc#php_70 Picture PHPather Spirituel : Vincent Pontier aka EL Roubio
  26. 26. nAcademy  Le 26 février 2015 Neuros ­  Features en cours (Votes/Discussions) ● Exceptions in the engine (for PHP 7) – Permettre la levée d'exceptions depuis le moteur de PHP ● Remove PHP 4 Constructors – Liés aux constructeurs. Depuis php5  __construct()→ ● Expectations – Identifier les problèmes en Dev ( basé sur assert() ) ● Array to string conversion – Convertir un Array en String
  27. 27. nAcademy  Le 26 février 2015 Neuros ­  Performance Picture EL Roubio – http://www.elroubio.net
  28. 28. nAcademy  Le 26 février 2015 Neuros ­  Configuration ● VM Debian 7 1GB RAM, 1 core, SSD ulabox.com symfony 2 index / product page PHP 5.5 / 5.6 / 7.0 opcache.validate_timestamps = 0 opcache.enable_file_override = 1 HHVM 3.5 Hhvm.server_stat_cache = 1 No extensions! (APCu) Nginx, Redis, Solr, MySQL Source 31/01/2015 : https://speakerdeck.com/acasademont/php7­at­php­day­spain­2015
  29. 29. nAcademy  Le 26 février 2015 Neuros ­  Résultat Réalisation 31/01/2015 ­ Source : https://speakerdeck.com/acasademont/php7­at­php­day­spain­2015
  30. 30. nAcademy  Le 26 février 2015 Neuros ­  Merci Questions ? @hellosct1 @neuro_paris Sources  ­ Pierre Joye ­ Albert Casademont ­ Internals rfc Adoption http://www.elephant­php.com Except the human PHPather

×