3v4l.org

run code in 300+ PHP versions simultaneously
<?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->status = $this->sanitizeAndValidate($aStatus); } public static function __callStatic($aStatus, $arguments = []) { return new static($aStatus); } public function isSuccess() { return ($this->status == static::SUCCESS); } public function isStopped() { return ($this->status == static::STOPPED); } public function isFailed() { return ($this->status == static::FAILED); } private function sanitize($aStatus) { return strtolower(trim($aStatus)); } private function validate($aStatus) { if (!in_array($aStatus, static::$validStatuses)) { throw new DomainException("Invalid event status [$aStatus]"); } } private function sanitizeAndValidate($aStatus) { $sanitized = $this->sanitize($aStatus); $this->validate($sanitized); return $sanitized; } } $status = EventStatus::Failed(); var_dump($status, $status->isSuccess());
Output for git.master, git.master_jit, rfc.property-hooks
object(EventStatus)#1 (1) { ["status":"EventStatus":private]=> string(6) "failed" } bool(false)

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
66.83 ms | 401 KiB | 8 Q