null,
"output" => null,
);
/**
* Creates a new question dialog.
* Creates a new menu dialog to be displayed to the user. All behaviour is
* defined through the $options parameter. The $output parameter is used to
* display the dialog in the {@link display()} method.
*
* @param ezcConsoleOutput $output Output object.
* @param ezcConsoleQuestionDialogOptions $options Options.
* @return void
*/
public function __construct( ezcConsoleOutput $output, ezcConsoleQuestionDialogOptions $options = null )
{
$this->output = $output;
$this->options = $options === null ? new ezcConsoleQuestionDialogOptions() : $options;
}
/**
* Returns if the dialog retrieved a valid result.
* If a valid result has already been received, this method returns true,
* otherwise false.
*
* @return bool If a valid result was retrieved.
*/
public function hasValidResult()
{
return $this->result !== null;
}
/**
* Returns the result retrieved.
* If no valid result was retreived, yet, this method should throw an
* ezcConsoleNoValidDialogResultException.
*
* If no valid result was retreived, yet, this method throws an
* ezcConsoleNoValidDialogResultException. Use {@link hasValidResult()} to
* avoid this.
*
* @return mixed The retreived result.
*
* @throws ezcDialogNoValidResultException
* if this method is called without a valid result being retrieved
* by the object. Use {@link hasValidResult()} to avoid this
* exception.
*/
public function getResult()
{
if ( $this->result === null )
{
throw new ezcConsoleNoValidDialogResultException();
}
return $this->result;
}
/**
* Displays the dialog and retreives a value from the user.
* Displays the dialog and retreives the desired answer from the user. If
* the a valid result is retrieved, it can be obtained using {@link
* getResult()}. The method {@link hasValidResult()} can be used to check
* if a valid result is available.
*
* @return void
* @throws ezcConsoleDialogAbortException
* if the user closes STDIN using
* // Would you like to proceed? (y/n)
* $dialog = ezcConsoleDialog( $out, "Would you like to proceed?" );
*
* // Would you like to proceed? (y/n) [n]
* $dialog = ezcConsoleDialog( $out, "Would you like to proceed?", "n" );
*
*
* @param ezcConsoleOutput $out Output object.
* @param string $questionString Question string.
* @param string $default "y" or "n", if default value is desired.
* @return ezcConsoleQuestionDialog The created dialog.
*/
public static function YesNoQuestion( ezcConsoleOutput $out, $questionString, $default = null )
{
$opts = new ezcConsoleQuestionDialogOptions();
$opts->text = $questionString;
$opts->showResults = true;
$opts->validator = new ezcConsoleQuestionDialogMappingValidator(
array( "y", "n" ),
$default,
ezcConsoleQuestionDialogCollectionValidator::CONVERT_LOWER,
array(
'yes' => 'y',
'no' => 'n',
)
);
return new ezcConsoleQuestionDialog( $out, $opts );
}
/**
* Property read access.
*
* @throws ezcBasePropertyNotFoundException
* If the the desired property is not found.
*
* @param string $propertyName Name of the property.
* @return mixed Value of the property or null.
* @ignore
*/
public function __get( $propertyName )
{
if ( array_key_exists( $propertyName, $this->properties ) )
{
return $this->properties[$propertyName];
}
throw new ezcBasePropertyNotFoundException( $propertyName );
}
/**
* Property write access.
*
* @param string $propertyName Name of the property.
* @param mixed $propertyValue The value for the property.
*
* @throws ezcBasePropertyPermissionException
* If the property you try to access is read-only.
* @throws ezcBasePropertyNotFoundException
* If the the desired property is not found.
* @ignore
*/
public function __set( $propertyName, $propertyValue )
{
switch ( $propertyName )
{
case "options":
if ( ( $propertyValue instanceof ezcConsoleQuestionDialogOptions ) === false )
{
throw new ezcBaseValueException(
$propertyName,
( is_object( $propertyValue ) ? get_class( $propertyValue ) : gettype( $propertyValue ) ),
"instance of ezcConsoleQuestionDialogOptions"
);
}
break;
case "output":
if ( ( $propertyValue instanceof ezcConsoleOutput ) === false )
{
throw new ezcBaseValueException(
$propertyName,
( is_object( $propertyValue ) ? get_class( $propertyValue ) : gettype( $propertyValue ) ),
"instance of ezcConsoleOutput"
);
}
break;
default:
throw new ezcBasePropertyNotFoundException( $propertyName );
}
$this->properties[$propertyName] = $propertyValue;
}
/**
* Property isset access.
*
* @param string $propertyName Name of the property to check.
* @return bool If the property exists or not.
* @ignore
*/
public function __isset( $propertyName )
{
return array_key_exists( $propertyName, $this->properties );
}
}
?>