Blog

PHPTour Lyon 2014 vu par Hadrien

Les 23 et 24 juin derniers se déroulait l’édition 2014 du PHPTour. Si vous ne connaissez pas encore le PHPTour, sachez qu’il s’agit d’une excellente initiative de l’AFUP qui a pour but d’organiser un salon chaque année « en province », autrement dit « pas à Paris ».

Cette année, c’était donc à Lyon qu’avait lieux la rencontre, avec pour thème « Méthodologie de travail et Industrialisation ». Pierre et moi-même étions les 2 heureux Occitech-iens à avoir la chance de pouvoir y participer.

phptour_lyon_2014

Cet article a donc pour pour de partager avec vous ce qui m’a marqué, ce que j’ai retenu de ce PHPTour.

Le cycle de conférence commence fort : on entame avec Rasmus Lerdorf, le créateur de PHP — rien que ça — qui nous présente une vision du futur de PHP.
Deux points m’ont principalement marqués lors de cette conférence.

Les générateurs de PHP 5.5

Je connaissais déjà les générateurs pour une utilisation « basique » comme la génération d’un tableau sans passer par une variable intermédiaire, comme ci-dessous :

for ($i = 1; $i <= 3; $i++) {
yield $i;
}
}

foreach (gen_one_to_three() as $value) {
echo "$value\n";
}

// 1
// 2
// 3

 

Mais encore plus fort que ça, il y a les coroutines ! Pour faire simple, une coroutine est une routine (fonction, méthode, etc.) mais qui ne renvoie pas forcément de résultat. À la place elle suspend son traitement jusqu’à ce qu’on lui dise de continuer.

Exemple :

function task() {
    for ($i = 1; $i <= 10; $i++) { 
       echo "Itération $i\n"; yield; 
    } 
} 
$task = task(); // Itération 1 
$task->next(); // Itération 2
$task->next(); // Itération 3

Une application concrète de ce principe serait par exemple un logger :

function logger($fileName) {
    $fileHandle = fopen($fileName, 'a');
    while (true) {
        fwrite($fileHandle, yield . "\n");
    }
}

$logger = logger(__DIR__ . '/log');
$logger->send('Foo');
$logger->send('Bar');

Pour aller plus loin avec les coroutines en PHP, je vous suggère cet article de blog (en anglais) : http://nikic.github.io/2012/12/22/Cooperative-multitasking-using-coroutines-in-PHP.html

PHP 5.6 : arrivée des fonctions variadiques

Déjà implémentées aujourd’hui dans PHP à l’aide de func_get_args(), les fonctions variadiques reviennent en force dans PHP 5.6 !
Pourquoi se passer de func_get_args() qui fonctionne déjà aujourd’hui me demanderez-vous ? Pour 2 raisons très simples : il est impossible de savoir qu’une fonction est variadique en regardant sa signature et func_get_args() retourne tous les arguments, y compris ceux qui sont clairement définis dans la signature.

Heureusement, PHP 5.6 arrive pour nous tirer de ce mauvais pas :

<?php class DB { 
    public function query($query, ...$parameters) { 
        $this->pdo->prepare($query); 
        $this->pdo->execute($parameters); 
    } 
} 
$userData = $db->query('SELECT * FROM users WHERE id = ?', $userId)->fetch();

Évidemment avec une vrai syntaxe pour les fonctions variadiques arrive également une syntaxe pour l’argument unpacking :

function test(...$args) { 
    var_dump($args); 
} 

function test2($arg1, $arg2, ...$args) { 
    var_dump($arg1, $arg2, $args); 
} 
$args1 = [1, 2, 3]; 
$args2 = [4, 5, 5]; 
test(...$args1, ...$args2); 
// [1, 2, 3, 4, 5, 6] test(1, 2, 3, ...$args2); 
// [1, 2, 3, 4, 5, 6] test2(...[1, 2, 3]); 
// [1, 2, 3] test3(1, 2, ...[3, 4]); 
// [1, 2, 3, 4]

Vous l’aurez compris, c’est assez puissant !
Monitorez

Le nombre de conférence abordant le sujet est un indicateur fort : si tu monitores pas en 2014, t’as raté ta vie !
Je ne m’épancherai pas trop sur le sujet parce que je sais que Pierre meurt d’envie de vous parler de tout ça (« graphite, logstash, stack ELK, popopo » – je peux l’entendre d’ici).

HHVM, le pour et le contre

Depuis le temps que j’en entendais parler, j’ai pu assister à une conférence parlant de HHVM
J’en retire une conclusion mi-figue mi-raisin.
Rapidement voilà ce que ça donne : HHVM en remplacement de PHP 5.5 + opcache en mode CGI ne fait pas gagner grand chose en terme de performances. Par contre, en convertissant son code en Hack, le language à la croisée de PHP et du C venant avec HHVM, les performances sont multipliées par 2, ce qui est très intéressant. Cependant, lorsqu’on pose la question aux orateurs concernant une éventuelle utilisation en production, la réponse est franche : non. HHVM et Hack sont trop jeunes et malgré une récente mise sur le marché de l’open source, Facebook est le principal développeur de la solution. S’ils laissent tomber le projet parce qu’ils trouvent mieux en interne, HHVM a de fortes chances de mourir dans la foulée.

Simplifiez votre processus de traduction

Je vais terminer ce compte rendu avec un outil révélé lors de ce PHPTour et qui m’a beaucoup plus : OpenLocalization.

openl10n

Cet outil répond à un besoin interne de BlaBlaCar en terme de gestion des traductions.
Voici une liste des avantages que je lui trouve :

  • Une interface centralisée
  • Une utilisation facile avec CLI permettant de faire des pull/push de ses fichiers de traduction
  • Il est open source, donc facile de le « hacker » pour ses propres besoins, et encore mieux, de participer à son évolution
  • Fonctionne avec tous les formats supportés par Symfony : xml, gettext, yaml, etc.
  • Une interface qui semble ergonomique et efficace

Bref j’ai eu un coup de cœur pour OpenLocalization et j’espère avoir rapidement l’occasion de le tester de mes propres petits doigts.


En conclusion, je vous dirai simplement que le PHPTour est un évènement important de la communauté PHP en France, on y apprend plein de choses, on fait des rencontres intéressantes et je vous recommande vivement d’y participer. En plus l’année prochaine il se déroule à Toulouse, alors venez nous voir pour l’occasion !

Comments are closed, but trackbacks and pingbacks are open.