public function getPreviousLine(){
		if(count($this->content) === 0 || $this->readPointer < 1){
			
			do {
				$buff = $this->readChunk();
				
				if($buff !== FALSE){
					$eolPos = strpos($buff, "\n");
				}else{
					// Empty buffer, no more to read.
					if(strlen($this->remainder) > 0){
						$buff = $this->remainder;
						$this->remainder = '';
						// Exit from while-loop
						break;
					}else{
						// Remainder also empty.
						return FALSE;
					}
				}
				
				if($eolPos === FALSE){
					// No eol found. Make buffer head of remainder and empty buffer.
					$this->remainder = $buff . $this->remainder;
					$buff = '';
				}elseif($eolPos !== 0){
					// eol found.
					$buff .= $this->remainder;
					$this->remainder = substr($buff, 0, $eolPos);
					$buff = substr($buff, $eolPos+1);
				}elseif($eolPos === 0){
					$buff .= $this->remainder;
					$buff = substr($buff, 1);
					$this->remainder = '';
				}
				
			}while(($buff !== FALSE) && ($eolPos === FALSE));
			
			$this->content = explode("\n", $buff);
			$this->readPointer = count($this->content);
		}
		
		if(count($this->content) > 0){
			return $this->content[--$this->readPointer];
		}else{
			return FALSE;
		}
	}
public function getPreviousLine(){
		if(count($this->content) === 0 || $this->readPointer < 1){
			
			do {
				$buff = $this->readChunk();
				
				if($buff !== FALSE){
					$eolPos = strpos($buff, "\n");
				}else{
					// Empty buffer, no more to read.
					if(strlen($this->remainder) > 0){
						$buff = $this->remainder;
						$this->remainder = '';
						// Exit from while-loop
						break;
					}else{
						// Remainder also empty.
						return FALSE;
					}
				}
				
				if($eolPos === FALSE){
					// No eol found. Make buffer head of remainder and empty buffer.
					$this->remainder = $buff . $this->remainder;
					$buff = '';
				}elseif($eolPos !== 0){
					// eol found.
					$buff .= $this->remainder;
					$this->remainder = substr($buff, 0, $eolPos);
					$buff = substr($buff, $eolPos+1);
				}elseif($eolPos === 0){
					$buff .= $this->remainder;
					$buff = substr($buff, 1);
					$this->remainder = '';
				}
				
			}while(($buff !== FALSE) && ($eolPos === FALSE));
			
			$this->content = explode("\n", $buff);
			$this->readPointer = count($this->content);
		}
		
		if(count($this->content) > 0){
			return $this->content[--$this->readPointer];
		}else{
			return FALSE;
		}
	}
public function getPreviousLine ( ) { if ( count ( $ this -> content ) === 0 || $ this -> readPointer < 1 ) { do { $ buff = $ this -> readChunk ( ) ; if ( $ buff !== FALSE ) { $ eolPos = strpos ( $ buff , "\n" ) ; } else { // Empty buffer, no more to read. if ( strlen ( $ this -> remainder ) > 0 ) { $ buff = $ this -> remainder ; $ this -> remainder = '' ; // Exit from while-loop break ; } else { // Remainder also empty. return FALSE ; } } if ( $ eolPos === FALSE ) { // No eol found. Make buffer head of remainder and empty buffer. $ this -> remainder = $ buff . $ this -> remainder ; $ buff = '' ; } elseif ( $ eolPos !== 0 ) { // eol found. $ buff .= $ this -> remainder ; $ this -> remainder = substr ( $ buff , 0 , $ eolPos ) ; $ buff = substr ( $ buff , $ eolPos + 1 ) ; } elseif ( $ eolPos === 0 ) { $ buff .= $ this -> remainder ; $ buff = substr ( $ buff , 1 ) ; $ this -> remainder = '' ; } } while ( ( $ buff !== FALSE ) && ( $ eolPos === FALSE ) ) ; $ this -> content = explode ( "\n" , $ buff ) ; $ this -> readPointer = count ( $ this -> content ) ; } if ( count ( $ this -> content ) > 0 ) { return $ this -> content [ -- $ this -> readPointer ] ; } else { return FALSE ; } }
Get one line of data from the file, starting from the end of the file.

@return string One line of data from the file.
Bool FALSE when there is no more data to get.
Get one line of data from the file starting from the end of the file .