SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
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
20 ans PHP
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/6)
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)
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
✔ Function fn ($id,$params);
✔ Splat Operator
✔ Function test (arg1,
arg2=null)
✔ Operator
✔ echo 2 xx 3 ; // 8
✔ Nice speed bump
✔ Etc.
PHP (5/6)
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)
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
●
PHP 7
– PHP Next Generation (PHPNG)
●
HHVM
– Code natif
●
Recki-ct
– Code natif
●
Phalanger
– .net engine
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 – elePHPant VS whale
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
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
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
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)
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));
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";
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']()
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 [];
}
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);
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
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
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 / 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
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
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

Contenu connexe

Tendances

Function oop - bonnes pratiques ms tech days
Function   oop - bonnes pratiques ms tech daysFunction   oop - bonnes pratiques ms tech days
Function oop - bonnes pratiques ms tech daysJean-Pierre Vincent
 
Introduction au langage Go
Introduction au langage GoIntroduction au langage Go
Introduction au langage GoSylvain Wallez
 
Patterns et bonnes pratiques autour de JavaScript
Patterns et bonnes pratiques autour de JavaScriptPatterns et bonnes pratiques autour de JavaScript
Patterns et bonnes pratiques autour de JavaScriptMicrosoft Technet France
 
PHP 5.3 : les nouveautés du futur si proche
PHP 5.3 : les nouveautés du futur si prochePHP 5.3 : les nouveautés du futur si proche
PHP 5.3 : les nouveautés du futur si prochePascal MARTIN
 
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 - afupJulien Vinber
 
Formation PHP
Formation PHPFormation PHP
Formation PHPkemenaran
 
當六脈神劍遇上 PhpStorm
當六脈神劍遇上 PhpStorm當六脈神劍遇上 PhpStorm
當六脈神劍遇上 PhpStormOomusou Xiao
 
Bases de PHP - Partie 1
Bases de PHP - Partie 1Bases de PHP - Partie 1
Bases de PHP - Partie 1Régis Lutter
 
Introduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINEIntroduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINEMarouan OMEZZINE
 
PHP #1 : introduction
PHP #1 : introductionPHP #1 : introduction
PHP #1 : introductionJean Michel
 
Trucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLTrucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLDamien Seguy
 
"Un module Prestashop, comment ca marche?"
"Un module Prestashop, comment ca marche?""Un module Prestashop, comment ca marche?"
"Un module Prestashop, comment ca marche?"o2sources
 
Monitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et PinbaMonitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et PinbaPatrick Allaert
 
Zend Framework 2
Zend Framework 2Zend Framework 2
Zend Framework 2epixelic
 

Tendances (20)

Function oop - bonnes pratiques ms tech days
Function   oop - bonnes pratiques ms tech daysFunction   oop - bonnes pratiques ms tech days
Function oop - bonnes pratiques ms tech days
 
Introduction au langage Go
Introduction au langage GoIntroduction au langage Go
Introduction au langage Go
 
PHP5: Endgame
PHP5: EndgamePHP5: Endgame
PHP5: Endgame
 
Patterns et bonnes pratiques autour de JavaScript
Patterns et bonnes pratiques autour de JavaScriptPatterns et bonnes pratiques autour de JavaScript
Patterns et bonnes pratiques autour de JavaScript
 
PHP 5.3 : les nouveautés du futur si proche
PHP 5.3 : les nouveautés du futur si prochePHP 5.3 : les nouveautés du futur si proche
PHP 5.3 : les nouveautés du futur si proche
 
Cours php
Cours phpCours php
Cours php
 
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
 
JAVA 8
JAVA 8JAVA 8
JAVA 8
 
Formation PHP
Formation PHPFormation PHP
Formation PHP
 
當六脈神劍遇上 PhpStorm
當六脈神劍遇上 PhpStorm當六脈神劍遇上 PhpStorm
當六脈神劍遇上 PhpStorm
 
Cours php
Cours phpCours php
Cours php
 
Bases de PHP - Partie 1
Bases de PHP - Partie 1Bases de PHP - Partie 1
Bases de PHP - Partie 1
 
Nouveautés de java 8
Nouveautés de java 8Nouveautés de java 8
Nouveautés de java 8
 
Introduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINEIntroduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINE
 
PHP #1 : introduction
PHP #1 : introductionPHP #1 : introduction
PHP #1 : introduction
 
Trucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLTrucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQL
 
"Un module Prestashop, comment ca marche?"
"Un module Prestashop, comment ca marche?""Un module Prestashop, comment ca marche?"
"Un module Prestashop, comment ca marche?"
 
Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?
 
Monitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et PinbaMonitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et Pinba
 
Zend Framework 2
Zend Framework 2Zend Framework 2
Zend Framework 2
 

En vedette

La mémoire et PHP
La mémoire et PHPLa mémoire et PHP
La mémoire et PHPneuros
 
RGAA 3 dans un Web Accessible
RGAA 3 dans un Web AccessibleRGAA 3 dans un Web Accessible
RGAA 3 dans un Web Accessibleneuros
 
L'open source dans les nouvelles architectures web
L'open source dans les nouvelles architectures webL'open source dans les nouvelles architectures web
L'open source dans les nouvelles architectures webChristophe Villeneuve
 
Livre Drupal avance, un CMS pour développeurs
Livre Drupal avance, un CMS pour développeursLivre Drupal avance, un CMS pour développeurs
Livre Drupal avance, un CMS pour développeursneuros
 
Drupal avancé, un CMS pour développeurs - drupalfr - Eyrolles
Drupal avancé, un CMS pour développeurs - drupalfr - EyrollesDrupal avancé, un CMS pour développeurs - drupalfr - Eyrolles
Drupal avancé, un CMS pour développeurs - drupalfr - EyrollesChristophe Villeneuve
 

En vedette (6)

La mémoire et PHP
La mémoire et PHPLa mémoire et PHP
La mémoire et PHP
 
RGAA 3 dans un Web Accessible
RGAA 3 dans un Web AccessibleRGAA 3 dans un Web Accessible
RGAA 3 dans un Web Accessible
 
L'open source dans les nouvelles architectures web
L'open source dans les nouvelles architectures webL'open source dans les nouvelles architectures web
L'open source dans les nouvelles architectures web
 
Livre Drupal avance, un CMS pour développeurs
Livre Drupal avance, un CMS pour développeursLivre Drupal avance, un CMS pour développeurs
Livre Drupal avance, un CMS pour développeurs
 
Drupal avancé, un CMS pour développeurs - drupalfr - Eyrolles
Drupal avancé, un CMS pour développeurs - drupalfr - EyrollesDrupal avancé, un CMS pour développeurs - drupalfr - Eyrolles
Drupal avancé, un CMS pour développeurs - drupalfr - Eyrolles
 
Les tests de securite devops
Les tests de securite devopsLes tests de securite devops
Les tests de securite devops
 

Similaire à Php 7 Think php7

Cours php -partie 1.pdf
Cours php -partie 1.pdfCours php -partie 1.pdf
Cours php -partie 1.pdfssuserc46a93
 
Cours Programmation web en PHP Cours Programmation web en PHP
Cours Programmation web en PHP Cours Programmation web en PHPCours Programmation web en PHP Cours Programmation web en PHP
Cours Programmation web en PHP Cours Programmation web en PHPBassim ELKHATTABY
 
Migration PHP4-PHP5
Migration PHP4-PHP5Migration PHP4-PHP5
Migration PHP4-PHP5julien pauli
 
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 SymfonyHugo Hamon
 
La référence Clear php
La référence Clear phpLa référence Clear php
La référence Clear phpDamien Seguy
 
Laravel yet another framework
Laravel  yet another frameworkLaravel  yet another framework
Laravel yet another frameworkLAHAXE Arnaud
 
PHP Tour 2012 - Conférence FuelPHP
PHP Tour 2012 - Conférence FuelPHPPHP Tour 2012 - Conférence FuelPHP
PHP Tour 2012 - Conférence FuelPHPNovius OS
 
Cours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partieCours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partiekadzaki
 
Cours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partieCours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partiekadzaki
 
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...fdussert
 
Patterns and OOP in PHP
Patterns and OOP in PHPPatterns and OOP in PHP
Patterns and OOP in PHPjulien pauli
 

Similaire à Php 7 Think php7 (20)

PHP 7 - Think php7
PHP 7 - Think php7PHP 7 - Think php7
PHP 7 - Think php7
 
Cours php -partie 1.pdf
Cours php -partie 1.pdfCours php -partie 1.pdf
Cours php -partie 1.pdf
 
Cours Programmation web en PHP Cours Programmation web en PHP
Cours Programmation web en PHP Cours Programmation web en PHPCours Programmation web en PHP Cours Programmation web en PHP
Cours Programmation web en PHP Cours Programmation web en PHP
 
Migration PHP4-PHP5
Migration PHP4-PHP5Migration PHP4-PHP5
Migration PHP4-PHP5
 
La première partie de la présentation PHP
La première partie de la présentation PHPLa première partie de la présentation PHP
La première partie de la présentation PHP
 
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
 
Syntaxe du langage PHP
Syntaxe du langage PHPSyntaxe du langage PHP
Syntaxe du langage PHP
 
La référence Clear php
La référence Clear phpLa référence Clear php
La référence Clear php
 
Php 5.3
Php 5.3Php 5.3
Php 5.3
 
Des tests modernes pour Drupal
Des tests modernes pour DrupalDes tests modernes pour Drupal
Des tests modernes pour Drupal
 
Laravel yet another framework
Laravel  yet another frameworkLaravel  yet another framework
Laravel yet another framework
 
PHP Tour 2012 - Conférence FuelPHP
PHP Tour 2012 - Conférence FuelPHPPHP Tour 2012 - Conférence FuelPHP
PHP Tour 2012 - Conférence FuelPHP
 
Fuel php nantes 2012
Fuel php nantes 2012Fuel php nantes 2012
Fuel php nantes 2012
 
Pgbackrest meetup
Pgbackrest meetupPgbackrest meetup
Pgbackrest meetup
 
Cours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partieCours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partie
 
Cours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partieCours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partie
 
Les structures de données PHP5
Les structures de données PHP5Les structures de données PHP5
Les structures de données PHP5
 
Ruby Pour RoR
Ruby Pour RoRRuby Pour RoR
Ruby Pour RoR
 
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...
 
Patterns and OOP in PHP
Patterns and OOP in PHPPatterns and OOP in PHP
Patterns and OOP in PHP
 

Plus de neuros

Solution pour un Réseau Social d'Entreprise (RSE)
Solution pour un Réseau Social d'Entreprise (RSE)Solution pour un Réseau Social d'Entreprise (RSE)
Solution pour un Réseau Social d'Entreprise (RSE)neuros
 
Le service workers
Le service workersLe service workers
Le service workersneuros
 
Proteger votre vie privee sur internet
Proteger votre vie privee sur internetProteger votre vie privee sur internet
Proteger votre vie privee sur internetneuros
 
Le pouvoir d'être Visible ou Invisible sur Internet
Le pouvoir d'être Visible ou Invisible  sur InternetLe pouvoir d'être Visible ou Invisible  sur Internet
Le pouvoir d'être Visible ou Invisible sur Internetneuros
 
Vos projets web sur les plateformes ouvertes
Vos projets web sur les plateformes ouvertesVos projets web sur les plateformes ouvertes
Vos projets web sur les plateformes ouvertesneuros
 
Http2 les impacts dans le web
Http2 les impacts dans le webHttp2 les impacts dans le web
Http2 les impacts dans le webneuros
 
Les effets de la loi Hamon
Les effets de la loi HamonLes effets de la loi Hamon
Les effets de la loi Hamonneuros
 
La sécurité et php
La sécurité et phpLa sécurité et php
La sécurité et phpneuros
 
Les protocoles temps réels
Les protocoles temps réelsLes protocoles temps réels
Les protocoles temps réelsneuros
 
Vectoriel et 3d en html5 - Animation newschool (partie 2)
Vectoriel et 3d en html5 - Animation newschool (partie 2)Vectoriel et 3d en html5 - Animation newschool (partie 2)
Vectoriel et 3d en html5 - Animation newschool (partie 2)neuros
 
Améliorer les performances SQL
Améliorer les performances SQLAméliorer les performances SQL
Améliorer les performances SQLneuros
 
Newschool partie1 methode HTML5
Newschool partie1 methode HTML5Newschool partie1 methode HTML5
Newschool partie1 methode HTML5neuros
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continuneuros
 
Effectuer des tests modernes pour drupal
Effectuer des tests modernes pour drupalEffectuer des tests modernes pour drupal
Effectuer des tests modernes pour drupalneuros
 
Integration Drupal systemes d'informations
Integration Drupal systemes d'informationsIntegration Drupal systemes d'informations
Integration Drupal systemes d'informationsneuros
 
La maitrise des contenus hors internet
La maitrise des contenus hors internetLa maitrise des contenus hors internet
La maitrise des contenus hors internetneuros
 
Pourquoi Firefox OS
Pourquoi Firefox OSPourquoi Firefox OS
Pourquoi Firefox OSneuros
 
Un CRM...sugarCRM
Un CRM...sugarCRMUn CRM...sugarCRM
Un CRM...sugarCRMneuros
 
Neuros Digital
Neuros DigitalNeuros Digital
Neuros Digitalneuros
 
Le cloud ton univers impitoyable
Le cloud ton univers impitoyableLe cloud ton univers impitoyable
Le cloud ton univers impitoyableneuros
 

Plus de neuros (20)

Solution pour un Réseau Social d'Entreprise (RSE)
Solution pour un Réseau Social d'Entreprise (RSE)Solution pour un Réseau Social d'Entreprise (RSE)
Solution pour un Réseau Social d'Entreprise (RSE)
 
Le service workers
Le service workersLe service workers
Le service workers
 
Proteger votre vie privee sur internet
Proteger votre vie privee sur internetProteger votre vie privee sur internet
Proteger votre vie privee sur internet
 
Le pouvoir d'être Visible ou Invisible sur Internet
Le pouvoir d'être Visible ou Invisible  sur InternetLe pouvoir d'être Visible ou Invisible  sur Internet
Le pouvoir d'être Visible ou Invisible sur Internet
 
Vos projets web sur les plateformes ouvertes
Vos projets web sur les plateformes ouvertesVos projets web sur les plateformes ouvertes
Vos projets web sur les plateformes ouvertes
 
Http2 les impacts dans le web
Http2 les impacts dans le webHttp2 les impacts dans le web
Http2 les impacts dans le web
 
Les effets de la loi Hamon
Les effets de la loi HamonLes effets de la loi Hamon
Les effets de la loi Hamon
 
La sécurité et php
La sécurité et phpLa sécurité et php
La sécurité et php
 
Les protocoles temps réels
Les protocoles temps réelsLes protocoles temps réels
Les protocoles temps réels
 
Vectoriel et 3d en html5 - Animation newschool (partie 2)
Vectoriel et 3d en html5 - Animation newschool (partie 2)Vectoriel et 3d en html5 - Animation newschool (partie 2)
Vectoriel et 3d en html5 - Animation newschool (partie 2)
 
Améliorer les performances SQL
Améliorer les performances SQLAméliorer les performances SQL
Améliorer les performances SQL
 
Newschool partie1 methode HTML5
Newschool partie1 methode HTML5Newschool partie1 methode HTML5
Newschool partie1 methode HTML5
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continu
 
Effectuer des tests modernes pour drupal
Effectuer des tests modernes pour drupalEffectuer des tests modernes pour drupal
Effectuer des tests modernes pour drupal
 
Integration Drupal systemes d'informations
Integration Drupal systemes d'informationsIntegration Drupal systemes d'informations
Integration Drupal systemes d'informations
 
La maitrise des contenus hors internet
La maitrise des contenus hors internetLa maitrise des contenus hors internet
La maitrise des contenus hors internet
 
Pourquoi Firefox OS
Pourquoi Firefox OSPourquoi Firefox OS
Pourquoi Firefox OS
 
Un CRM...sugarCRM
Un CRM...sugarCRMUn CRM...sugarCRM
Un CRM...sugarCRM
 
Neuros Digital
Neuros DigitalNeuros Digital
Neuros Digital
 
Le cloud ton univers impitoyable
Le cloud ton univers impitoyableLe cloud ton univers impitoyable
Le cloud ton univers impitoyable
 

Php 7 Think php7

  • 1. nAcademy Le 26 février 2015 Neuros - PHP 7 Think php7 Christophe Villeneuve
  • 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. nAcademy Le 26 février 2015 Neuros - Situation actuelle Picture hellosct1 : Pyramide elePHPant
  • 4. nAcademy Le 26 février 2015 Neuros - ➢ PHP 5.2 ✔ The END 2010 PHP (1/6)
  • 5. nAcademy Le 26 février 2015 Neuros - ➢PHP 5.2 ➢PHP 5.3 ✔ De 2009 à Août 2014 ✔ ChangeLog ✔ Namespace ✔ Etc. PHP (2/6)
  • 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/6)
  • 7. 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)
  • 8. nAcademy Le 26 février 2015 Neuros - ➢PHP 6.0 ✔ No Comment Screen Hidden
  • 9. 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)
  • 10. 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)
  • 11. nAcademy Le 26 février 2015 Neuros - + = 5 + 1 = 7
  • 12. 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
  • 13. nAcademy Le 26 février 2015 Neuros - Roadmap Source : https://wiki.php.net/rfc/php7_57_roadmap
  • 14. nAcademy Le 26 février 2015 Neuros - Les changements ? yes A whale (Une baleine) Picture hellosct1 : Tadoussac 2011 – elePHPant VS whale
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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)
  • 19. 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));
  • 20. 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";
  • 21. 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']()
  • 22. 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 []; }
  • 23. 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);
  • 24. 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
  • 25. 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
  • 26. nAcademy Le 26 février 2015 Neuros - Performance Picture EL Roubio – http://www.elroubio.net
  • 27. 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
  • 28. 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
  • 29. 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