3v4l.org

run code in 300+ PHP versions simultaneously
<?php abstract class StringWrapper { protected function __construct(readonly public string $value) {} abstract public static function parse(string $raw): self; } class Email extends StringWrapper { public static function parse(string $raw): self { str_contains($raw, '@') or throw new InvalidArgumentException(); return new self($raw); } } class User { public function __construct(readonly public Email $email) {} // Constructors should be strict, use factory methods for a friendly API public static function make(string|Email $email): self { $email instanceof Email or $email = Email::parse($email); return new self($email); } } $user = new User(Email::parse("dude@la.us")); $user = User::make("walter@la.us"); // $user = User::make("donnie"); // throws
Output for git.master, git.master_jit

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:
29.99 ms | 405 KiB | 5 Q