Je dois créer un script qui s'exécutera sur la ligne de commande en utilisant PHP et je veux profiter du ZF et des modèles (classes) que j'ai écrits en l'utilisant. Comment puis-je le faire aussi élégamment que possible?Comment créer un script pour la ligne de commande en PHP avec Zend Framework?
Répondre
Vous devez dupliquer le code de public/index.php sans appeler la méthode run de Zend_Application (qui exécute le composant MVC) et charger uniquement les ressources dont vous avez besoin.
#!/usr/bin/php
<?php
define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
set_include_path(realpath(APPLICATION_PATH . '/../library'));
require_once 'Zend/Application.php';
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
// Load only the ressources that you need
$application->getBootstrap()->bootstrap(
array(
'Db'
)
);
// Do stuff
Prenez soin de l'adapter à l'emplacement de votre script cli.
Fondamentalement, une interface CLI est juste une couche de présentation différente. Si vous maintenez la séparation de votre M vs VC propre, tout ce dont vous avez besoin est un nouveau point d'entrée pour adresser le Modèle, par exemple votre interface CLI.
Vous pouvez utiliser Zend_Console_Getopt
pour faciliter le développement du client CLI. Il vous permet d'analyser rapidement les entrées passées à un script CLI. Vous devrez alors déléguer toute entrée à votre modèle, comme vous le feriez "régulièrement".