Browse Source

Added default value support for \yii\console\Command::prompt

tags/2.0.0-beta
Alexander Makarov 13 years ago
parent
commit
f62a68f322
  1. 33
      framework/console/Command.php

33
framework/console/Command.php

@ -304,19 +304,36 @@ abstract class Command extends \yii\base\Component
* Reads input via the readline PHP extension if that's available, or fgets() if readline is not installed. * Reads input via the readline PHP extension if that's available, or fgets() if readline is not installed.
* *
* @param string $message to echo out before waiting for user input * @param string $message to echo out before waiting for user input
* @param string $default the default string to be returned when user does not write anything. Defaults to null.
* @return mixed line read as a string, or false if input has been closed * @return mixed line read as a string, or false if input has been closed
*/ */
public function prompt($message) public function prompt($message, $default = null)
{ {
if($default !== null) {
$message .= " [$default] ";
}
else {
$message .= ' ';
}
if(extension_loaded('readline')) if(extension_loaded('readline'))
{ {
$input = readline($message.' '); $input = readline($message);
readline_add_history($input); if($input) {
return $input; readline_add_history($input);
} else }
{ } else {
echo $message.' '; echo $message;
return trim(fgets(STDIN)); $input = fgets(STDIN);
if($input === false) {
$input = trim($input);
}
}
if($input === false) {
return false;
}
else {
return empty($input) ? $default : $input;
} }
} }

Loading…
Cancel
Save