name; } public function isRecursive(): bool { return $this->recursive; } /** @return string[] */ public function getDependencies(): array { return $this->dependencies; } public function getSQL(): string { $fields = ''; if ($this->fields !== []) { $fields = sprintf(' (%s)', implode(', ', $this->fields)); } return sprintf( '%s%s AS (%s)', $this->getName(), $fields, $this->expression, ); } public function __toString(): string { return $this->getSQL(); } }