generator = $this->lineGenerator($data); } public function get(): \Generator { return $this->generator; } protected function lineGenerator(string $string): \Generator { $string = explode("\n", $string); $lastLineIndex = count($string) - 1; $lastLineBeforeFinalNewLineIndex = ($string[$lastLineIndex] === '') ? $lastLineIndex - 1 : $lastLineIndex; foreach ($string as $lineNumber => $line) { $this->_lastLine = ($lineNumber === $lastLineIndex); $this->_lastLineBeforeFinalNewLine = ($lineNumber === $lastLineBeforeFinalNewLineIndex); yield $lineNumber + 1 => $line; $this->_firstLine = false; } } }