3v4l.org

run code in 300+ PHP versions simultaneously
<?php declare(strict_types=1); namespace App\Entity; class Email { private string $email; private ?string $domain; public function __construct(string $email) { $this->email = $email; $this->setDomainFromEmail($email); } public function getEmail(): string { return $this->email; } public function getDomain(): ?string { return $this->domain; } public function __toString(): string { return $this->email; } private function setDomainFromEmail(string $email): void { preg_match('/^.+@(.*)/', $email, $matches); $this->domain = $matches[1] ?? null; } } #[ORM\Entity] class User { public function __construct( #[ORM\Column] private string|Stringable $firstName, #[ORM\Column] private string|Stringable $lastName, #[ORM\Column] private string|Stringable|Email $email, #[ORM\Column] private null|string|Stringable $cuid = null, #[ORM\Column] private ?int $id = null, ) {} public function getId(): ?int { return $this->id; } public function getFirstName(): string|Stringable { return $this->firstName; } public function getLastName(): string|Stringable { return $this->lastName; } public function getEmail(): Email|string|Stringable { return $this->email; } public function getCuid(): null|string|Stringable { return $this->cuid; } public function __toString(): string { return "$this->firstName $this->lastName"; } }

preferences:
31.97 ms | 404 KiB | 5 Q