Provide Status::__toString()

maintenance/eval.php is much easier to use now,
you can just print $statusInstance;

Change-Id: I068b0f54b16d618a1f6115133632885e8e45e897
This commit is contained in:
saper 2014-08-26 22:10:16 +02:00
parent 6b370da508
commit 110d5ccea0

View file

@ -369,14 +369,14 @@ class Status {
}
/**
* Returns a list of status messages of the given type
* Returns a list of status messages of the given type (or all if false)
* @param string $type
* @return array
*/
protected function getStatusArray( $type ) {
protected function getStatusArray( $type = false ) {
$result = array();
foreach ( $this->errors as $error ) {
if ( $error['type'] === $type ) {
if ( $type === false || $error['type'] === $type ) {
if ( $error['message'] instanceof Message ) {
$result[] = array_merge(
array( $error['message']->getKey() ),
@ -462,4 +462,45 @@ class Status {
public function getValue() {
return $this->value;
}
/**
* @return string
*/
public function __toString() {
$status = $this->isOK() ? "OK" : "Error";
if ( count( $this->errors ) ) {
$errorcount = "collected " . ( count($this->errors) ) . " error(s) on the way";
} else {
$errorcount = "no errors detected";
}
if ( isset( $this->value ) ) {
$valstr = gettype( $this->value ) . " value set";
if ( is_object( $this->value ) ) {
$valstr .= "\"" . get_class( $this->value ) . "\" instance";
}
} else {
$valstr = "no value set";
}
$out = sprintf( "<%s, %s, %s>",
$status,
$errorcount,
$valstr
);
if ( count ($this->errors ) > 0 ) {
$hdr = sprintf( "+-%'-4s-+-%'-25s-+-%'-40s-+\n", "", "", "" );
$i = 1;
$out .= "\n";
$out .= $hdr;
foreach( $this->getStatusArray() as $stat ) {
$out .= sprintf( "| %4d | %-25.25s | %-40.40s |\n",
$i,
$stat[0],
implode(" ", array_slice( $stat, 1 ) )
);
$i += 1;
}
$out .= $hdr;
};
return $out;
}
}