3v4l.org

run code in 300+ PHP versions simultaneously
<?php final class CommandId { private $name; private $time; public function __construct($name) { $this->time = time(); $this->name = trim($name); if (empty($this->name)) { throw new DomainException('Name must not be empty'); } } public static function fromString($idString) { $parts = explode('_', $idString); if (count($parts) != 2) { throw new DomainException("Unexpected format [$idString]"); } $id = new static($parts[0]); $id->time = (int) $parts[1]; return $id; } public function name() { return $this->name; } public function time() { return $this->time; } public function __toString() { return "{$this->name}_{$this->time}"; } } $one = new CommandId('foo'); $two = new CommandId('foo'); assert($one != $two, 'one should not equal two'); var_dump($one, $two, (string) $one, (string) $two);
Output for 5.4.8 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.38, 7.0.0 - 7.0.32, 7.1.0 - 7.1.25, 7.2.0 - 7.2.13, 7.3.0 - 7.3.1
Warning: assert(): one should not equal two failed in /in/d4iA2 on line 48 object(CommandId)#1 (2) { ["name":"CommandId":private]=> string(3) "foo" ["time":"CommandId":private]=> int(1392271856) } object(CommandId)#2 (2) { ["name":"CommandId":private]=> string(3) "foo" ["time":"CommandId":private]=> int(1392271856) } string(14) "foo_1392271856" string(14) "foo_1392271856"
Output for 7.0.33
object(CommandId)#1 (2) { ["name":"CommandId":private]=> string(3) "foo" ["time":"CommandId":private]=> int(1392271856) } object(CommandId)#2 (2) { ["name":"CommandId":private]=> string(3) "foo" ["time":"CommandId":private]=> int(1392271857) } string(14) "foo_1392271856" string(14) "foo_1392271857"
Output for 5.3.0 - 5.3.24, 5.3.26 - 5.3.29, 5.4.0 - 5.4.7
Warning: assert() expects exactly 1 parameter, 2 given in /in/d4iA2 on line 48 object(CommandId)#1 (2) { ["name":"CommandId":private]=> string(3) "foo" ["time":"CommandId":private]=> int(1392271856) } object(CommandId)#2 (2) { ["name":"CommandId":private]=> string(3) "foo" ["time":"CommandId":private]=> int(1392271856) } string(14) "foo_1392271856" string(14) "foo_1392271856"
Output for 5.3.25
Warning: assert() expects exactly 1 parameter, 2 given in /in/d4iA2 on line 48 object(CommandId)#1 (2) { ["name":"CommandId":private]=> string(3) "foo" ["time":"CommandId":private]=> int(1392271856) } object(CommandId)#2 (2) { ["name":"CommandId":private]=> string(3) "foo" ["time":"CommandId":private]=> int(1392271857) } string(14) "foo_1392271856" string(14) "foo_1392271857"
Output for 5.1.0 - 5.1.6, 5.2.0 - 5.2.17
Parse error: syntax error, unexpected T_STATIC, expecting T_STRING or T_VARIABLE or '$' in /in/d4iA2 on line 24
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Parse error: parse error, unexpected T_STATIC, expecting T_STRING or T_VARIABLE or '$' in /in/d4iA2 on line 24
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_CLASS in /in/d4iA2 on line 3
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.3.11, 4.4.0 - 4.4.1
Parse error: parse error, unexpected T_CLASS in /in/d4iA2 on line 3
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error in /in/d4iA2 on line 3
Process exited with code 255.

preferences:
189.78 ms | 401 KiB | 288 Q