CakePHP : effectuer une “task” via une interface web

CakePHP fournit de base quelques méthodes permettant de développer des applications dans le but de les exécuter avec PHP-cli, c’est à dire de les exécuter comme des scripts shell au lieu de passer par l’interface graphique.
Je ne propose pas ici un tutoriel permettant de développer ce genre de scripts. Il en existe déjà un résumant assez bien la chose sur cakebaker (en).

Après avoir développé une application, nous avons plusieurs tâches qui sont exécutées dans le script shell principal.
Cependant il peut être utile, pour diverses raisons de tests, d’analyses de bugs voir statistiques, d’exécuter les mêmes méthodes présentes dans nos tasks mais via une page web.
Il serait fortement bête de devoir faire un copier/coller de notre méthode et de la remettre dans un contrôleur. Cela ne serait pas vraiment en concordance avec le mojo du framework ("think twice, code once").

Supposons donc que dans votre contrôleur "admin", vous désiriez utiliser la méthode "makeTest" de la tâche "test".

Créez une nouvelle action dans votre contrôleur.
Dans celle-ci, placez les lignes suivantes :

include(APP.'console/libs/shell.php');
vendor(’shells/tasks/test’);

Vous avez ici inclu dans votre action les fichiers nécessaires l’instanciation de votre tâche.
Le premier fichier contient la classe parente à celle que doit avoir votre tâche. La seconde contient votre tâche (remplacer "test" par le nom de votre tâche).

$tache = $test->makeTest();

Vous n’avez plus qu’

Maintenant initialisons notre tâche :

$test = new TestTask();

Et exécutons la méthode que nous désirons pour notre tâche.

$tache = $text->makeTest();

Vous n’avez maintenant plus qu’à effectuer l’action que vous désirez avec les données que votre méthode vous renvoie.

Irish Coffee

This entry was posted on Jeudi, juin 12th, 2008 at 15:00 and is filed under Développement. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Post a Comment