Applications en Ligne de Commande ================================= Les applications CLI sont exécutées depuis la ligne de commande. Elles sont utiles pour créer de jobs planifiés, des scripts, des utilitaires et bien plus encore. Structure --------- La structure minimale d'une application CLI doit ressembler à ceci: * app/config/config.php * app/tasks/MainTask.php * app/cli.php <-- fichier d'amorce principal Création de l'Amorce -------------------- Comme dans les applications MVC classiques, le fichier d'amorce est utilisé pour amorcer l'application. Au lieu du traditionnel index.php des application web, nous utilisons un fichier cli.php comme point d'entrée de l'application. Ci-dessous un exemple qui sera utilisé pour notre exemple. .. code-block:: php registerDirs( [ __DIR__ . "/tasks", ] ); $loader->register(); // Chargement de la configuration (si elle existe) $configFile = __DIR__ . "/config/config.php"; if (is_readable($configFile)) { $config = include $configFile; $di->set("config", $config); } // Création de l'application console $console = new ConsoleApp(); $console->setDI($di); /** * Traitement des arguments */ $arguments = []; foreach ($argv as $k => $arg) { if ($k === 1) { $arguments["task"] = $arg; } elseif ($k === 2) { $arguments["action"] = $arg; } elseif ($k >= 3) { $arguments["params"][] = $arg; } } try { // Gestion des arguments transmis $console->handle($arguments); } catch (\Phalcon\Exception $e) { echo $e->getMessage(); exit(255); } Cet extrait de code peut être exécuté ainsi: .. code-block:: bash $ php app/cli.php Ceci est la tache 'default' et l'action 'default' Tâches ------ Le fonctionnement des tâches est similaire à celui des contrôleurs. Chaque application nécessite au moins "MainTask" et "mainAction" et chaque tâche une "mainAction" qui sera exécutée si aucune action n'est indiquée explicitement. Ci-dessous se trouve un exemple du fichier app/tasks/MainTask.php: .. code-block:: php setShared("console", $console); try { // Gestion des arguments fournis $console->handle($arguments); } catch (\Phalcon\Exception $e) { echo $e->getMessage(); exit(255); } Ainsi vous pouvez utiliser la console à l'intérieur de n'importe quelle tâche. L'exemple ci-dessous est une version modifiée de MainTask.php: .. code-block:: php console->handle( [ "task" => "main", "action" => "test", ] ); } public function testAction() { echo "Je serais imprime aussi !" . PHP_EOL; } } Cependant, ce serait une meilleure idée que d'étendre :doc:`Phalcon\\Cli\\Task <../api/Phalcon_Cli_Task>` et développer ce type de logique ici.