$identifiers */ private array $identifiers; public function __construct(Identifier $firstIdentifier, Identifier ...$otherIdentifiers) { $this->identifiers = array_merge([$firstIdentifier], array_values($otherIdentifiers)); } /** @return non-empty-list */ public function getIdentifiers(): array { return $this->identifiers; } public function toSQL(AbstractPlatform $platform): string { return $this->joinIdentifiers(static fn (Identifier $identifier): string => $identifier->toSQL($platform)); } public function toString(): string { return $this->joinIdentifiers(static fn (Identifier $identifier): string => $identifier->toString()); } /** @param callable(Identifier): string $mapper */ private function joinIdentifiers(callable $mapper): string { return implode('.', array_map($mapper, $this->identifiers)); } }