PHP : retour vers le futur !

29
PHP : Retour vers le futur ! Apéro PHP du 11 juin 2010 Frédéric Hardy [email protected] \ http://blog.mageekbox.net \ @mageekguy « Vous savez, l'histoire, elle va changer. » Marty Mc Fly à M. Strickland – Retour vers le futur

description

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

Transcript of PHP : retour vers le futur !

Page 1: PHP : retour vers le futur !

PHP : Retour vers le futur !

Apéro PHP du 11 juin 2010

Frédéric Hardy

[email protected] \ http://blog.mageekbox.net \ @mageekguy

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

Page 2: PHP : retour vers le futur !

2

PHP : Retour vers le futur !

Plan

1. ...Le passé

2. Le paradoxe temporel et ses conséquences

3. Le futur...

4. Conclusion

Page 3: PHP : retour vers le futur !

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

Page 4: PHP : retour vers le futur !

4

PHP : Retour vers le futur !

● 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).

Quelques dates

Page 5: PHP : retour vers le futur !

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.

Page 6: PHP : retour vers le futur !

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.

Page 7: PHP : retour vers le futur !

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.

Page 8: PHP : retour vers le futur !

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.

Page 9: PHP : retour vers le futur !

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

Page 10: PHP : retour vers le futur !

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...).

Page 11: PHP : retour vers le futur !

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 !

Page 12: PHP : retour vers le futur !

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.

Page 13: PHP : retour vers le futur !

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.

Page 14: PHP : retour vers le futur !

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.

Page 15: PHP : retour vers le futur !

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.

Page 16: PHP : retour vers le futur !

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

Page 17: PHP : retour vers le futur !

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.

Page 18: PHP : retour vers le futur !

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.

Page 19: PHP : retour vers le futur !

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.

Page 20: PHP : retour vers le futur !

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();

Page 21: PHP : retour vers le futur !

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.

Page 22: PHP : retour vers le futur !

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.

Page 23: PHP : retour vers le futur !

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)

Page 24: PHP : retour vers le futur !

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) { ...}

Page 25: PHP : retour vers le futur !

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é.

Page 26: PHP : retour vers le futur !

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.

Page 27: PHP : retour vers le futur !

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

Page 28: PHP : retour vers le futur !

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 ».

Page 29: PHP : retour vers le futur !

29

PHP : Retour vers le futur !

Frédéric Hardy

[email protected] \ http://blog.mageekbox.net \ @mageekguy