SlideShare une entreprise Scribd logo
PHP : Retour vers le futur !



« Vous savez, l'histoire, elle va changer. »
                              Marty Mc Fly à M. Strickland – Retour vers le futur




              Apéro PHP du 11 juin 2010


                           Frédéric Hardy




  frederic.hardy@mageekbox.net  http://blog.mageekbox.net  @mageekguy
PHP : Retour vers le futur !

                   Plan

1. ...Le passé
2. Le paradoxe temporel et ses conséquences
3. Le futur...
4. Conclusion




                                              2
PHP : Retour vers le futur !


                        ...Le passé


« Par tous les pépins de la pomme de Newton, que s'est-il passé ici ? »
                                 Emmet Brown à Marty Mc Fly – Retour vers le futur II




                                                                                        3
PHP : Retour vers le futur !

        Quelques dates

●   1995 : Naissance du langage.
●   1996 : PHP 2 (+ 1 an).
●   1998 : PHP 3 (+ 2 ans).
●   2000 : PHP 4 (+ 2 ans).
●   2004 : PHP 5 (+ 4 ans).
●   2005 : Formalisation de PHP 6.
●   2009 : PHP 5.3 (+ 5 ans).

                                     4
PHP : Retour vers le futur !

     Les principales nouveautés de PHP 6

●   Ajout de l'instruction GOTO.
●   Fermetures et fonctions anonymes.
●   Résolution statique à la volée.
●   Contrôle du type (arguments et valeur de retour).
●   Espaces de nommage.
●   Support natif d'Unicode.


                                                    5
PHP : Retour vers le futur !

       Le support Unicode dans PHP 6

●   Utilisation de UTF-16.
●   Mis en œuvre au niveau du source et des
    données.
●   Conversion à la volée de l'ensemble du source.
●   Complique le développement de PHP.
●   Gourmand en ressource.



                                                     6
PHP : Retour vers le futur !

     Les effets de bords induit par PHP 6

●   Tout doit être fait en double.
●   PHP 6 est plus complexe que PHP 5.
●   PHP 6 est plus lent que PHP 5.
    ➔   Charge de travail plus importante pour les
        développeurs.
         ➔   Désintérêt des contributeurs pour PHP 6.
              ➔ Concentration sur PHP 5.




                                                        7
PHP : Retour vers le futur !

La politique de développement de PHP 6

●   Le trunk est dédié au développement de
    PHP 5.
●   PHP 6 dispose de sa propre branche.
●   PHP 6 est développé parallélement à PHP 5.
●   Tout ajout dans PHP 5 doit être intégré à
    PHP 6 pour assurer la compatibilité
    ascendante.


                                                 8
PHP : Retour vers le futur !



Le paradoxe temporel et ses conséquences

  « Cette rencontre créerait un paradoxe temporel dont l'issue engendrerait
   une réaction en chaîne qui pourrait déchirer le tissu-même du continuum
              espace-temps, provoquant la destruction totale de l'univers. »
                                      Emmet Brown à Marty Mc Fly – Retour vers le futur II




                                                                                             9
PHP : Retour vers le futur !

    2010 : L'année du paradoxe temporel
●   Le développement de PHP 6 dure depuis 5 ans
    et il stagne.
●   PHP 5.3 embarque la plupart des
    fonctionnalités majeures de PHP 6.
    –   Ajout de l'instruction GOTO.
    –   Fermetures et fonctions anonymes.
    –   Résolution statique à la volée.
    –   Espaces de nommage.
●   PHP 5 évolue (contrôle de type, traits...).
                                                  10
PHP : Retour vers le futur !

                  La réaction...

●   Le 11 mars 2010, Rasmus Lerdorf annonce
    officiellement l'abandon du développement de
    PHP 6.
●   5 ans de développement partent à la poubelle...
    ou pas !




                                                   11
PHP : Retour vers le futur !

                       ... en...

●   La prochaine version majeure de PHP est
    développée dans la continuité de PHP 5.3.
●   Elle n'est plus développée à partir d'une
    branche parallèle mais à partir du trunk.
●   Tout à été fait pour que le développement
    reprenne dans les meilleurs délais.




                                                12
PHP : Retour vers le futur !

                       ... chaîne...

●   Les pratiques de développement inaugurées
    par PHP 5.3 sont reprises :
    –   Tandem de gestionnaires de version.
    –   Utilisation des Request for Comment (RFC).
●   Il y a une réelle volonté de raccourcir les cycles
    de développement.




                                                     13
PHP : Retour vers le futur !

    ... ne détruit finalement pas l'Univers...

●   Les décisions prisent portent leurs fruits :
    –   Les développeurs sont à nouveau motivés.
    –   Ils travaillent.




                                                   14
PHP : Retour vers le futur !
    ... même s'il y a encore des problèmes
●   Il n'y a aucune discussion publique au sujet du
    support d'Unicode.
●   Lukas Kahwe Smith a quitté le projet.
●   La communauté des contributeurs a toujours un
    problème de communication.
●   Il n'y a aucune planification.
●   Le trunk n'est pas représentatif de la prochaine
    version.
●   Le nom de la prochaine version est inconnu.
                                                      15
PHP : Retour vers le futur !



                    Le futur...
             « Tout ça c'est du passé. »
             « Du futur, vous voulez dire. »
             « Si tu préfères. »
Dialogue entre Emmet Brown et Marty Mc Fly – Retour vers le futur II




                                                                       16
PHP : Retour vers le futur !

           PHP sera plus « propre »

●   Suppression de register_globals.
●   Suppression des magic_quotes.
●   Suppression des fonctions ereg_*().
●   Suppression du safe_mode.
●   Correction de bugs.
●   Suppression des fichiers devenus inutiles.


                                                 17
PHP : Retour vers le futur !

                 PHP sera plus rapide

●   Des performances en hausse grâce :
    –   À des optimisations au niveau du Zend Engine.
    –   À la mise en place d'API plus efficace.




                                                        18
PHP : Retour vers le futur !

              PHP sera plus puissant

●   Trait
●   Dtrace
●   FPM
●   Déréférencement des tableaux en valeur de
    retour des fonctions/méthodes.
●   Contrôle du type des arguments.
●   Etc.

                                                19
PHP : Retour vers le futur !
                             Les « traits »
●   Injection dynamique de méthodes dans une
    classe.
trait jsonSerializable {
   function toJSON() { return json_encode($this->getJSONProperties());   }
   public abstract function getJSONProperties();
}

class A {
   use jsonSerializable;
   ...
}

class B {
   use jsonSerializable;
   ...
}

$a = new A(uniqid(), array(uniqid(), uniqid()));
$aJSON = $a->toJSON();

$b = new A(uniqid(), uniqid());
$bJSON = $b->toJSON();


                                                                             20
PHP : Retour vers le futur !

                       DTrace

●   Outil de traçabilité conçu par Sun
    Microsystems.
●   Permet de tracer en temps réel l'éxécution d'un
    script.
●   Même en production.
●   Peu de pertes de performances.
●   Utilise le langage D.


                                                  21
PHP : Retour vers le futur !

                         FPM

●   Nouveau module CGI (alternative à FastCGI).
●   Adapté aux sites à fort trafic.
●   Sécurisé.
●   Offre une gestion fine des processus.
●   Garde la trace des scripts lents.
●   Etc.


                                                  22
PHP : Retour vers le futur !
           Déréférencement des tableaux
●   Permet d'accéder à un élément de tableau à
    partir d'un appel de fonction/méthode :
function returnArray(){
    return array(uniqid(), uniqid(), uniqid());
}

echo returnArray()[1];

class toto {
    protected $tableau = array(1, 2.3);

    public function truc() {
        return $this->tableau;
    }
}

$toto = new toto();
var_dump($toto->truc()[1]); // float(2.3)
$toto->array[] = $toto;
var_dump($toto->truc()[2]->truc()[2]->tableau[0]); // int(1)



                                                               23
PHP : Retour vers le futur !

        Contrôle du type des arguments

●   Possible d'indiquer le type numérique attendu
    pour les arguments de fonctions/méthodes.
●   Conversion à la volée pour correspondre au
    type demandé.
●   Génération d'une erreur si la conversion
    entraîne une perte de précision.
function typeJuggling(int $int, float $float, array $array, aClass $object)
{
   ...
}


                                                                          24
PHP : Retour vers le futur !

    PHP sera (encore) plus professionnel

●   Le langage est actuellement en cours de
    professionnalisation.
    –   Publication.
    –   Compétences en hausse sur le marché de l'emploi.
●   La tendance va s'amplifier.
    –   Les « frameworks » populaires migrent vers PHP
        5.3.
    –   Le langage évolue pour répondre aux besoins du
        marché.
                                                         25
PHP : Retour vers le futur !

                          Conclusion
         « Le futur n'est jamais écrit à l'avance, pour personne. »
                           Emmet Brown à Marty Mc Fly – Retour vers le futur III



●   PHP 6 n'était pas le futur.
●   PHP 5 était le futur.
●   Le développement a repris sur des bases plus
    saines et les contributeurs sont motivés.
●   Le langage évolue et se professionnalise.
●   Le langage sera ce que nous en faisons.
                                                                                   26
PHP : Retour vers le futur !

                            Questions ?

    « Mon but, c'est d'élargir notre perception de l'humanité, d'où nous venons, où
nous allons, les soubresauts et les péripéties, les périls et les promesses, peut-être
                même trouver une réponse à cette éternelle question : Pourquoi ? »

                                          Emmet Brown à Marty Mc Fly – Retour vers le futur II




                                                                                                 27
PHP : Retour vers le futur !

                 Remerciements

●   Nicolas Lœuillet pour l'organisation de l'apéro.
●   SQL Technologies pour la première tournée.
●   Jean-Marc Fontaine pour la logistique.
●   Robert Zemeckis, pour « Retour vers le futur ».




                                                       28
PHP : Retour vers le futur !




                       Frédéric Hardy

frederic.hardy@mageekbox.net  http://blog.mageekbox.net  @mageekguy




                                                                   29

Contenu connexe

En vedette

Chapitre3 elk concepts_avances
Chapitre3 elk concepts_avancesChapitre3 elk concepts_avances
Chapitre3 elk concepts_avances
Fabien SABATIER
 
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
Sébastien Prunier
 
Real World MongoDB: Use Cases from Financial Services by Daniel Roberts
Real World MongoDB: Use Cases from Financial Services by Daniel RobertsReal World MongoDB: Use Cases from Financial Services by Daniel Roberts
Real World MongoDB: Use Cases from Financial Services by Daniel Roberts
MongoDB
 
Introduction à ElasticSearch
Introduction à ElasticSearchIntroduction à ElasticSearch
Introduction à ElasticSearch
Fadel Chafai
 
Journée DevOps : Des dashboards pour tous avec ElasticSearch, Logstash et Kibana
Journée DevOps : Des dashboards pour tous avec ElasticSearch, Logstash et KibanaJournée DevOps : Des dashboards pour tous avec ElasticSearch, Logstash et Kibana
Journée DevOps : Des dashboards pour tous avec ElasticSearch, Logstash et Kibana
Publicis Sapient Engineering
 
Elasticsearch - Montpellier JUG
Elasticsearch - Montpellier JUGElasticsearch - Montpellier JUG
Elasticsearch - Montpellier JUG
David Pilato
 

En vedette (6)

Chapitre3 elk concepts_avances
Chapitre3 elk concepts_avancesChapitre3 elk concepts_avances
Chapitre3 elk concepts_avances
 
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
 
Real World MongoDB: Use Cases from Financial Services by Daniel Roberts
Real World MongoDB: Use Cases from Financial Services by Daniel RobertsReal World MongoDB: Use Cases from Financial Services by Daniel Roberts
Real World MongoDB: Use Cases from Financial Services by Daniel Roberts
 
Introduction à ElasticSearch
Introduction à ElasticSearchIntroduction à ElasticSearch
Introduction à ElasticSearch
 
Journée DevOps : Des dashboards pour tous avec ElasticSearch, Logstash et Kibana
Journée DevOps : Des dashboards pour tous avec ElasticSearch, Logstash et KibanaJournée DevOps : Des dashboards pour tous avec ElasticSearch, Logstash et Kibana
Journée DevOps : Des dashboards pour tous avec ElasticSearch, Logstash et Kibana
 
Elasticsearch - Montpellier JUG
Elasticsearch - Montpellier JUGElasticsearch - Montpellier JUG
Elasticsearch - Montpellier JUG
 

Similaire à PHP : retour vers le futur !

AFUP & PHP @ Supelec
AFUP & PHP @ SupelecAFUP & PHP @ Supelec
AFUP & PHP @ Supelec
julien pauli
 
PHP, ce truc de vieux
PHP, ce truc de vieuxPHP, ce truc de vieux
PHP, ce truc de vieux
Olivier Mansour
 
Drupal & Symfony2
Drupal & Symfony2Drupal & Symfony2
Drupal & Symfony2
th0masr
 
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULgDévelopper des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULg
Romain Boman
 
Séminaire Linagora : poste de travail Libre, décembre 2009
Séminaire Linagora : poste de travail Libre, décembre 2009Séminaire Linagora : poste de travail Libre, décembre 2009
Séminaire Linagora : poste de travail Libre, décembre 2009
LINAGORA
 
Frameworks : A history of violence
Frameworks : A history of violenceFrameworks : A history of violence
Frameworks : A history of violence
Francois Zaninotto
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHP
Pascal MARTIN
 
43_pps.pdf
43_pps.pdf43_pps.pdf
43_pps.pdf
ssuser192642
 
Big Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBig Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache Zeppelin
Bruno Bonnin
 
PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4
julien pauli
 
la boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtoolsla boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtools
Christophe Villeneuve
 
Haxe 4, un Typescript pour PHP ?
Haxe 4, un Typescript pour PHP ?Haxe 4, un Typescript pour PHP ?
Haxe 4, un Typescript pour PHP ?
François Barbut
 
Conference Php Web Services
Conference Php Web ServicesConference Php Web Services
Conference Php Web Services
Guillaume Jarysta
 
Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015
SQLI DIGITAL EXPERIENCE
 
Synchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementSynchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplement
gplanchat
 
Cours php -partie 1.pdf
Cours php -partie 1.pdfCours php -partie 1.pdf
Cours php -partie 1.pdf
ssuserc46a93
 
Explorez vos données présentes dans MongoDB avec Apache Zeppelin
Explorez vos données présentes dans MongoDB avec Apache ZeppelinExplorez vos données présentes dans MongoDB avec Apache Zeppelin
Explorez vos données présentes dans MongoDB avec Apache Zeppelin
Bruno Bonnin
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Horacio Gonzalez
 

Similaire à PHP : retour vers le futur ! (20)

AFUP & PHP @ Supelec
AFUP & PHP @ SupelecAFUP & PHP @ Supelec
AFUP & PHP @ Supelec
 
PHP, ce truc de vieux
PHP, ce truc de vieuxPHP, ce truc de vieux
PHP, ce truc de vieux
 
Drupal & Symfony2
Drupal & Symfony2Drupal & Symfony2
Drupal & Symfony2
 
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULgDévelopper des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULg
 
Séminaire Linagora : poste de travail Libre, décembre 2009
Séminaire Linagora : poste de travail Libre, décembre 2009Séminaire Linagora : poste de travail Libre, décembre 2009
Séminaire Linagora : poste de travail Libre, décembre 2009
 
Frameworks : A history of violence
Frameworks : A history of violenceFrameworks : A history of violence
Frameworks : A history of violence
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHP
 
43_pps.pdf
43_pps.pdf43_pps.pdf
43_pps.pdf
 
Big Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBig Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache Zeppelin
 
OWF12/OSDC.Fr Golang concurrency patterns
OWF12/OSDC.Fr Golang concurrency patternsOWF12/OSDC.Fr Golang concurrency patterns
OWF12/OSDC.Fr Golang concurrency patterns
 
PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4
 
la boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtoolsla boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtools
 
Haxe 4, un Typescript pour PHP ?
Haxe 4, un Typescript pour PHP ?Haxe 4, un Typescript pour PHP ?
Haxe 4, un Typescript pour PHP ?
 
Conference Php Web Services
Conference Php Web ServicesConference Php Web Services
Conference Php Web Services
 
Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015
 
Synchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementSynchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplement
 
Cours php -partie 1.pdf
Cours php -partie 1.pdfCours php -partie 1.pdf
Cours php -partie 1.pdf
 
Explorez vos données présentes dans MongoDB avec Apache Zeppelin
Explorez vos données présentes dans MongoDB avec Apache ZeppelinExplorez vos données présentes dans MongoDB avec Apache Zeppelin
Explorez vos données présentes dans MongoDB avec Apache Zeppelin
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
 
Cours PHP 1
Cours PHP 1Cours PHP 1
Cours PHP 1
 

Plus de Frederic Hardy

Comment tester des services web ?
Comment tester des services web ?Comment tester des services web ?
Comment tester des services web ?
Frederic Hardy
 
TDD avec atoum
TDD avec atoumTDD avec atoum
TDD avec atoum
Frederic Hardy
 
TDD avec atoum
TDD avec atoumTDD avec atoum
TDD avec atoum
Frederic Hardy
 
Anatomie du test
Anatomie du testAnatomie du test
Anatomie du test
Frederic Hardy
 
Atoum
AtoumAtoum
Plein PHAR !
Plein PHAR !Plein PHAR !
Plein PHAR !
Frederic Hardy
 
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...
Frederic Hardy
 
Traits : de la théorie à la pratique
Traits : de la théorie à la pratiqueTraits : de la théorie à la pratique
Traits : de la théorie à la pratique
Frederic Hardy
 
Plein phar
Plein pharPlein phar
Plein phar
Frederic Hardy
 
VIM puissance PHP = VI Improved !
VIM puissance PHP = VI Improved !VIM puissance PHP = VI Improved !
VIM puissance PHP = VI Improved !
Frederic Hardy
 

Plus de Frederic Hardy (11)

Comment tester des services web ?
Comment tester des services web ?Comment tester des services web ?
Comment tester des services web ?
 
TDD avec atoum
TDD avec atoumTDD avec atoum
TDD avec atoum
 
TDD avec atoum
TDD avec atoumTDD avec atoum
TDD avec atoum
 
Anatomie du test
Anatomie du testAnatomie du test
Anatomie du test
 
Atoum
AtoumAtoum
Atoum
 
Plein PHAR !
Plein PHAR !Plein PHAR !
Plein PHAR !
 
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...
 
Plein phar !
Plein phar !Plein phar !
Plein phar !
 
Traits : de la théorie à la pratique
Traits : de la théorie à la pratiqueTraits : de la théorie à la pratique
Traits : de la théorie à la pratique
 
Plein phar
Plein pharPlein phar
Plein phar
 
VIM puissance PHP = VI Improved !
VIM puissance PHP = VI Improved !VIM puissance PHP = VI Improved !
VIM puissance PHP = VI Improved !
 

PHP : retour vers le futur !

  • 1. PHP : Retour vers le futur ! « Vous savez, l'histoire, elle va changer. » Marty Mc Fly à M. Strickland – Retour vers le futur Apéro PHP du 11 juin 2010 Frédéric Hardy frederic.hardy@mageekbox.net http://blog.mageekbox.net @mageekguy
  • 2. PHP : Retour vers le futur ! Plan 1. ...Le passé 2. Le paradoxe temporel et ses conséquences 3. Le futur... 4. Conclusion 2
  • 3. PHP : Retour vers le futur ! ...Le passé « Par tous les pépins de la pomme de Newton, que s'est-il passé ici ? » Emmet Brown à Marty Mc Fly – Retour vers le futur II 3
  • 4. PHP : Retour vers le futur ! Quelques dates ● 1995 : Naissance du langage. ● 1996 : PHP 2 (+ 1 an). ● 1998 : PHP 3 (+ 2 ans). ● 2000 : PHP 4 (+ 2 ans). ● 2004 : PHP 5 (+ 4 ans). ● 2005 : Formalisation de PHP 6. ● 2009 : PHP 5.3 (+ 5 ans). 4
  • 5. PHP : Retour vers le futur ! Les principales nouveautés de PHP 6 ● Ajout de l'instruction GOTO. ● Fermetures et fonctions anonymes. ● Résolution statique à la volée. ● Contrôle du type (arguments et valeur de retour). ● Espaces de nommage. ● Support natif d'Unicode. 5
  • 6. PHP : Retour vers le futur ! Le support Unicode dans PHP 6 ● Utilisation de UTF-16. ● Mis en œuvre au niveau du source et des données. ● Conversion à la volée de l'ensemble du source. ● Complique le développement de PHP. ● Gourmand en ressource. 6
  • 7. PHP : Retour vers le futur ! Les effets de bords induit par PHP 6 ● Tout doit être fait en double. ● PHP 6 est plus complexe que PHP 5. ● PHP 6 est plus lent que PHP 5. ➔ Charge de travail plus importante pour les développeurs. ➔ Désintérêt des contributeurs pour PHP 6. ➔ Concentration sur PHP 5. 7
  • 8. PHP : Retour vers le futur ! La politique de développement de PHP 6 ● Le trunk est dédié au développement de PHP 5. ● PHP 6 dispose de sa propre branche. ● PHP 6 est développé parallélement à PHP 5. ● Tout ajout dans PHP 5 doit être intégré à PHP 6 pour assurer la compatibilité ascendante. 8
  • 9. PHP : Retour vers le futur ! Le paradoxe temporel et ses conséquences « Cette rencontre créerait un paradoxe temporel dont l'issue engendrerait une réaction en chaîne qui pourrait déchirer le tissu-même du continuum espace-temps, provoquant la destruction totale de l'univers. » Emmet Brown à Marty Mc Fly – Retour vers le futur II 9
  • 10. PHP : Retour vers le futur ! 2010 : L'année du paradoxe temporel ● Le développement de PHP 6 dure depuis 5 ans et il stagne. ● PHP 5.3 embarque la plupart des fonctionnalités majeures de PHP 6. – Ajout de l'instruction GOTO. – Fermetures et fonctions anonymes. – Résolution statique à la volée. – Espaces de nommage. ● PHP 5 évolue (contrôle de type, traits...). 10
  • 11. PHP : Retour vers le futur ! La réaction... ● Le 11 mars 2010, Rasmus Lerdorf annonce officiellement l'abandon du développement de PHP 6. ● 5 ans de développement partent à la poubelle... ou pas ! 11
  • 12. PHP : Retour vers le futur ! ... en... ● La prochaine version majeure de PHP est développée dans la continuité de PHP 5.3. ● Elle n'est plus développée à partir d'une branche parallèle mais à partir du trunk. ● Tout à été fait pour que le développement reprenne dans les meilleurs délais. 12
  • 13. PHP : Retour vers le futur ! ... chaîne... ● Les pratiques de développement inaugurées par PHP 5.3 sont reprises : – Tandem de gestionnaires de version. – Utilisation des Request for Comment (RFC). ● Il y a une réelle volonté de raccourcir les cycles de développement. 13
  • 14. PHP : Retour vers le futur ! ... ne détruit finalement pas l'Univers... ● Les décisions prisent portent leurs fruits : – Les développeurs sont à nouveau motivés. – Ils travaillent. 14
  • 15. PHP : Retour vers le futur ! ... même s'il y a encore des problèmes ● Il n'y a aucune discussion publique au sujet du support d'Unicode. ● Lukas Kahwe Smith a quitté le projet. ● La communauté des contributeurs a toujours un problème de communication. ● Il n'y a aucune planification. ● Le trunk n'est pas représentatif de la prochaine version. ● Le nom de la prochaine version est inconnu. 15
  • 16. PHP : Retour vers le futur ! Le futur... « Tout ça c'est du passé. » « Du futur, vous voulez dire. » « Si tu préfères. » Dialogue entre Emmet Brown et Marty Mc Fly – Retour vers le futur II 16
  • 17. PHP : Retour vers le futur ! PHP sera plus « propre » ● Suppression de register_globals. ● Suppression des magic_quotes. ● Suppression des fonctions ereg_*(). ● Suppression du safe_mode. ● Correction de bugs. ● Suppression des fichiers devenus inutiles. 17
  • 18. PHP : Retour vers le futur ! PHP sera plus rapide ● Des performances en hausse grâce : – À des optimisations au niveau du Zend Engine. – À la mise en place d'API plus efficace. 18
  • 19. PHP : Retour vers le futur ! PHP sera plus puissant ● Trait ● Dtrace ● FPM ● Déréférencement des tableaux en valeur de retour des fonctions/méthodes. ● Contrôle du type des arguments. ● Etc. 19
  • 20. PHP : Retour vers le futur ! Les « traits » ● Injection dynamique de méthodes dans une classe. trait jsonSerializable { function toJSON() { return json_encode($this->getJSONProperties()); } public abstract function getJSONProperties(); } class A { use jsonSerializable; ... } class B { use jsonSerializable; ... } $a = new A(uniqid(), array(uniqid(), uniqid())); $aJSON = $a->toJSON(); $b = new A(uniqid(), uniqid()); $bJSON = $b->toJSON(); 20
  • 21. PHP : Retour vers le futur ! DTrace ● Outil de traçabilité conçu par Sun Microsystems. ● Permet de tracer en temps réel l'éxécution d'un script. ● Même en production. ● Peu de pertes de performances. ● Utilise le langage D. 21
  • 22. PHP : Retour vers le futur ! FPM ● Nouveau module CGI (alternative à FastCGI). ● Adapté aux sites à fort trafic. ● Sécurisé. ● Offre une gestion fine des processus. ● Garde la trace des scripts lents. ● Etc. 22
  • 23. PHP : Retour vers le futur ! Déréférencement des tableaux ● Permet d'accéder à un élément de tableau à partir d'un appel de fonction/méthode : function returnArray(){ return array(uniqid(), uniqid(), uniqid()); } echo returnArray()[1]; class toto { protected $tableau = array(1, 2.3); public function truc() { return $this->tableau; } } $toto = new toto(); var_dump($toto->truc()[1]); // float(2.3) $toto->array[] = $toto; var_dump($toto->truc()[2]->truc()[2]->tableau[0]); // int(1) 23
  • 24. PHP : Retour vers le futur ! Contrôle du type des arguments ● Possible d'indiquer le type numérique attendu pour les arguments de fonctions/méthodes. ● Conversion à la volée pour correspondre au type demandé. ● Génération d'une erreur si la conversion entraîne une perte de précision. function typeJuggling(int $int, float $float, array $array, aClass $object) { ... } 24
  • 25. PHP : Retour vers le futur ! PHP sera (encore) plus professionnel ● Le langage est actuellement en cours de professionnalisation. – Publication. – Compétences en hausse sur le marché de l'emploi. ● La tendance va s'amplifier. – Les « frameworks » populaires migrent vers PHP 5.3. – Le langage évolue pour répondre aux besoins du marché. 25
  • 26. PHP : Retour vers le futur ! Conclusion « Le futur n'est jamais écrit à l'avance, pour personne. » Emmet Brown à Marty Mc Fly – Retour vers le futur III ● PHP 6 n'était pas le futur. ● PHP 5 était le futur. ● Le développement a repris sur des bases plus saines et les contributeurs sont motivés. ● Le langage évolue et se professionnalise. ● Le langage sera ce que nous en faisons. 26
  • 27. PHP : Retour vers le futur ! Questions ? « Mon but, c'est d'élargir notre perception de l'humanité, d'où nous venons, où nous allons, les soubresauts et les péripéties, les périls et les promesses, peut-être même trouver une réponse à cette éternelle question : Pourquoi ? » Emmet Brown à Marty Mc Fly – Retour vers le futur II 27
  • 28. PHP : Retour vers le futur ! Remerciements ● Nicolas Lœuillet pour l'organisation de l'apéro. ● SQL Technologies pour la première tournée. ● Jean-Marc Fontaine pour la logistique. ● Robert Zemeckis, pour « Retour vers le futur ». 28
  • 29. PHP : Retour vers le futur ! Frédéric Hardy frederic.hardy@mageekbox.net http://blog.mageekbox.net @mageekguy 29