Conférence donné lors de l'apéro PHP lillois du 11 juin 2010, au sujet du futur de PHP suite à l'arrêt du développement de PHP6.
Pourquoi ? Quelles ont été les réactions de la communauté des contributeurs ? Que se passe t'il maintenant ? À quoi ressemblera la prochaine version de PHP ?
Autant de questions auxquelles j'essaye de répondre dans cette présentation.
Un complément d'informations sur l'apéro en lui-même est disponible à l'adresse http://blog.mageekbox.net/?post/2010/06/12/%24aperoPhp
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
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