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.