color string, contains the color for this format. * - style array(string), contains the lists of styles that are associated with this format. * - bgcolor string, contains the background color for this format. * * Possible values of {@link ezcConsoleOutputFormat::$color} are: * - gray * - red * - green * - yellow * - blue * - magenta * - cyan * - white * - default (representing the consoles default color) * * For {@link ezcConsoleOutputFormat::$bgcolor} the following values are valid: * - black * - red * - green * - yellow * - blue * - magenta * - cyan * - white * - default (representing the consoles default background color) * * The {@link ezcConsoleOutputFormat::$style} attribute takes an array of * (possibly) multiple attributes. Choose from the lists below: * * - default (resets all attributes to default) * * - bold * - faint * - normal * * - italic * - notitalic * * - underlined * - doubleunderlined * - notunderlined * * - blink * - blinkfast * - noblink * * - negative * - positive * * * @package ConsoleTools * @version 1.1beta1 */ class ezcConsoleOutputFormat { /** * Array that defines this class' properties. * * @var array(string=>string) */ protected $properties = array( 'color' => 'default', 'style' => array( 'default' ), 'bgcolor' => 'default', ); /** * Create a new ezcConsoleOutputFormat object. * Creates a new object of this class. * * @param string $color Name of a color value. * @param array(int=>string) $style Names of style values. * @param string $bgcolor Name of a bgcolor value. */ public function __construct( $color = 'default', array $style = null, $bgcolor = 'default' ) { $this->__set( 'color', $color ); $this->__set( 'style', isset( $style ) ? $style : array( 'default' ) ); $this->__set( 'bgcolor', $bgcolor ); } /** * Overloaded __get() method to gain read-only access to some attributes. * * @param string $propertyName Name of the property to read. * @return mixed Desired value if exists, otherwise null. */ public function __get( $propertyName ) { if ( isset( $this->properties[$propertyName] ) ) { return $this->properties[$propertyName]; } } /** * Overloaded __set() method to gain read-only access to properties. * It also performs checks on setting others. * * @throws ezcBasePropertyNotFoundException * If the setting you try to access does not exists * @throws ezcBaseValueException * If trying to set an invalid value for a setting. * * @param string $propertyName Name of the attrinbute to access. * @param string $val The value to set. * @return void */ public function __set( $propertyName, $val ) { if ( !isset( $this->properties[$propertyName] ) ) { throw new ezcBasePropertyNotFoundException( $propertyName ); } // Extry handling of multi styles if ( $propertyName === 'style' ) { if ( !is_array( $val ) ) $val = array( $val ); foreach ( $val as $style ) { if ( !ezcConsoleOutput::isValidFormatCode( $propertyName, $style ) ) { throw new ezcBaseValueException( $propertyName, $style, 'valid ezcConsoleOutput format code' ); } } $this->properties['style'] = $val; return; } // Continue normal handling if ( !ezcConsoleOutput::isValidFormatCode( $propertyName, $val ) ) { throw new ezcBaseValueException( $propertyName, $style, 'valid ezcConsoleOutput format code' ); } $this->properties[$propertyName] = $val; } /** * Property isset access. * * @param string $propertyName Name of the property. * @return bool True is the property is set, otherwise false. */ public function __isset( $propertyName ) { return isset( $this->properties[$propertyName] ); } } ?>