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

PHP : retour vers le futur !

  • 1.
    PHP : Retourvers 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 : Retourvers le futur ! Plan 1. ...Le passé 2. Le paradoxe temporel et ses conséquences 3. Le futur... 4. Conclusion 2
  • 3.
    PHP : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers 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 : Retourvers le futur ! Frédéric Hardy frederic.hardy@mageekbox.net http://blog.mageekbox.net @mageekguy 29