- var_dump: documentation ( source)
- in_array: documentation ( source)
- strtolower: documentation ( source)
<?php
class EventStatus
{
const SUCCESS = 'success';
const STOPPED = 'stopped';
const FAILED = 'failed';
private static $validStatuses = [
self::SUCCESS,
self::STOPPED,
self::FAILED
];
private $status = self::SUCCESS;
public function __construct($aStatus = self::SUCCESS)
{
$this->validateStatus($aStatus);
$this->status = (string) $aStatus;
}
public static function __callStatic($aStatus, $arguments = [])
{
return new static($aStatus);
}
public function isSuccess()
{
return ($this->status == self::SUCCESS);
}
public function isStopped()
{
return ($this->status == self::STOPPED);
}
public function isFailed()
{
return ($this->status == self::FAILED);
}
private function validateStatus($aStatus)
{
if (!in_array(strtolower($aStatus), static::$validStatuses)) {
throw new DomainException("Invalid event status [$aStatus]");
}
}
}
var_dump(EventStatus::Failed());