. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Core\Field; use RuntimeException; /** * A link value object. Immutable. */ class Link { private string $id; private ?string $name = null; public function __construct(string $id) { if (!$id) { throw new RuntimeException("Empty ID."); } $this->id = $id; } /** * Get an ID. */ public function getId(): string { return $this->id; } /** * Get a name. */ public function getName(): ?string { return $this->name; } /** * Clone with a name. */ public function withName(?string $name): self { $obj = new self($this->id); $obj->name = $name; return $obj; } /** * Create from an ID. */ public static function create(string $id, ?string $name = null): self { return (new self($id))->withName($name); } }