log = $log; return $this; } /** * Set the entry * * @param EntryInterface $entry * @return $this */ public function setEntry(EntryInterface $entry): static { $this->entry = $entry; return $this; } /** * Print the log * * @return string */ public function print(): string { if ($this->entry) { return $this->printEntry(); } else { return $this->printLog(); } } /** * Print a log * * @return string */ protected function printLog(): string { $return = ""; foreach ($this->log as $entry) { $return .= $this->printEntry($entry); } return $return; } /** * Print an entry * * @param EntryInterface|null $entry * @return string */ protected function printEntry(?EntryInterface $entry = null): string { if ($entry === null) { $entry = $this->entry; } $return = ""; foreach ($entry as $line) { $return .= $this->printLine($line); } return $return; } /** * Print a line * * @param LineInterface $line * @return string */ abstract protected function printLine(LineInterface $line): string; }