
Introduction
Une tâche s’exécute directement depuis une interface en ligne de commande en utilisant le script php symfony présent à la racine du projet. N’importe quel développeur ayant déjà développé sous Symfony a un jour utilisé les taches depuis la ligne de commande en exécutant par exemple la célèbre tache php.exe symfony cc
Symfony fournit nativement un large choix de jeux de tâches automatiques pour une grande variété d’usages. Il est possible d’obtenir une liste complète de toutes les tâches disponibles en exécutant le script symfony sans lui fournir la moindre option ou argument.
$ php.exe symfony
Vous aurez certainement remarqué que les tâches sont groupées sous des espaces de nom. Les noms des tâches sont généralement composés d’un espace de nom et d’un nom, séparés par un caractère « : ». Certaines commandes spéciales telles que help et list dérogent à la règle car elles sont exemptes d’espace de nom.
Ce schéma de nommage permet de catégoriser facilement les tâches les unes par rapport aux autres, et il s’agira plus tard de choisir un espace de nom pertinent pour chaque nouvelle tâche développée.
Ecrire ses propres tâches
Une commande Symfony permet de créer directement la nouvelle tache que l’on souhaite ajouter mais pour détailler au mieux le fonctionnement nous allons tout faire manuellement.
Commençons par créer un répertoire hello/ dans lib/task/, on ajoute ensuite le fichier helloWorldTask.class.php
// lib/task/hello/helloWorldTask.class.php
class helloWorldTask extends sfBaseTask
{
public function configure()
{
$this->namespace = 'hello';
$this->name = 'world';
}
public function execute($arguments = array(), $options = array())
{
echo 'Hello World!';
}
}
Si on exécute la commande
php.exe symfony hello:world
On obtient
Hello World!
Le seul but de cette tâche est d’imprimer la chaîne Hello World! dans la console. C’est déjà un bon point de départ ! Bien sûr, les tâches ne servent pas seulement à afficher du contenu dans la console directement avec les fonctions echo ou print.
Etendre la classe abstraite sfBaseTask permet ainsi au développeur de bénéficier d’autres méthodes pratiques, telles que log() qui remplit exactement le même besoin, à savoir afficher du contenu.
public function execute($arguments = array(), $options = array())
{
$this->log('Hello World!');
}
Vous avez probablement remarqué la présence des deux arguments transmis à la méthode execute(), $arguments et $options. Ces deux variables servent à contenir tous les arguments et options passés à la tâche à l’exécution. Nous détaillerons ces variables dans une prochaine partie.
public function configure()
{
$this->addArgument('who', sfCommandArgument::OPTIONAL, 'What is your name?', 'Symfony');
}
public function execute($arguments = array(), $options = array())
{
$this->log($arguments['who'].' say Hello World!');
}
On relance la commande pour observer le résultat
php.exe symfony hello:world John
A ce stade vous devriez etre en mesure de débuter vos première taches, une seconde partie viendra compléter cet article avec notamment les arguments et les options passés à une commande.