In symfony, it's possible to return a value in your execute() method.
Let's create a test task :
┌─(yoda@box)(09:46:59) └─(~/var/www/test)-> ./symfony generate:task test >> task Creating "/home/yoda/var/www/test.../testTask.class.php" task file
Adding a return value at the end of the method. :
<?php class testTask extends sfBaseTask { protected function configure() { // // add your own arguments here // $this->addArguments(array( // new sfCommandArgument('my_arg', sfCommandArgument::REQUIRED, 'My argument'), // )); $this->addOptions(array( new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name'), new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'), new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'doctrine'), // add your own options here )); $this->namespace = ''; $this->name = 'test'; $this->briefDescription = ''; $this->detailedDescription = <<<EOF The [test|INFO] task does things. Call it with: [php symfony test|INFO]|> EOF; } protected function execute($arguments = array(), $options = array()) { // initialize the database connection $databaseManager = new sfDatabaseManager($this->configuration); $connection = $databaseManager->getDatabase($options['connection'] ? $options['connection'] : null)->getConnection(); // add your code here return 42; } }
And now, execute the task :
┌─(yoda@box)(09:47:32) └─(~/var/www/test)-> ./symfony test ┌─(yoda@box)(09:47:40) └─(~/var/www/test)-> echo $? 42
The return value is correctly returned. Note that without return value, the task simply returns 0.
In the case that an exception occurs, let's see what is returned. I added a dummy exception in the execute method :
<?php class testTask extends sfBaseTask { protected function configure() { // // add your own arguments here // $this->addArguments(array( // new sfCommandArgument('my_arg', sfCommandArgument::REQUIRED, 'My argument'), // )); $this->addOptions(array( new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name'), new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'), new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'doctrine'), // add your own options here )); $this->namespace = ''; $this->name = 'test'; $this->briefDescription = ''; $this->detailedDescription = <<<EOF The [test|INFO] task does things. Call it with: [php symfony test|INFO]|> EOF; } protected function execute($arguments = array(), $options = array()) { // initialize the database connection $databaseManager = new sfDatabaseManager($this->configuration); $connection = $databaseManager->getDatabase($options['connection'] ? $options['connection'] : null)->getConnection(); // add your code here throw new Exception('foo'); return 42; } }
┌─(yoda@box)(09:51:37) └─(~/var/www/test)-> ./symfony test foo ┌─(yoda@box)(09:51:43) └─(~/var/www/test)-> echo $? 1
The task returns 1 in case of an exception.