private function fetch($resource, int $length = self::CHUNK_SIZE, string $byte = null): string
    {
        $remaining = $length;

        if (('' === $this->buffer || 0 < ($remaining -= strlen($this->buffer))) && is_resource($resource)) {
            // Error reporting suppressed since fread() produces a warning if the stream unexpectedly closes.
            $this->buffer .= @fread($resource, $remaining);
        }

        if (null === $byte || false === ($position = strpos($this->buffer, $byte))) {
            if (strlen($this->buffer) <= $length) {
                $data = $this->buffer;
                $this->buffer = '';
                return $data;
            }

            $position = $length;
        } else {
            ++$position; // Include byte in result.
        }

        $data = (string) substr($this->buffer, 0, $position);
        $this->buffer = (string) substr($this->buffer, $position);
        return $data;
    }
private function fetch($resource, int $length = self::CHUNK_SIZE, string $byte = null): string
    {
        $remaining = $length;

        if (('' === $this->buffer || 0 < ($remaining -= strlen($this->buffer))) && is_resource($resource)) {
            // Error reporting suppressed since fread() produces a warning if the stream unexpectedly closes.
            $this->buffer .= @fread($resource, $remaining);
        }

        if (null === $byte || false === ($position = strpos($this->buffer, $byte))) {
            if (strlen($this->buffer) <= $length) {
                $data = $this->buffer;
                $this->buffer = '';
                return $data;
            }

            $position = $length;
        } else {
            ++$position; // Include byte in result.
        }

        $data = (string) substr($this->buffer, 0, $position);
        $this->buffer = (string) substr($this->buffer, $position);
        return $data;
    }
private function fetch ( $ resource , int $ length = self :: CHUNK_SIZE , string $ byte = null ) : string { $ remaining = $ length ; if ( ( '' === $ this -> buffer || 0 < ( $ remaining -= strlen ( $ this -> buffer ) ) ) && is_resource ( $ resource ) ) { // Error reporting suppressed since fread() produces a warning if the stream unexpectedly closes. $ this -> buffer .= @ fread ( $ resource , $ remaining ) ; } if ( null === $ byte || false === ( $ position = strpos ( $ this -> buffer , $ byte ) ) ) { if ( strlen ( $ this -> buffer ) <= $ length ) { $ data = $ this -> buffer ; $ this -> buffer = '' ; return $ data ; } $ position = $ length ; } else { ++ $ position ; // Include byte in result. } $ data = ( string ) substr ( $ this -> buffer , 0 , $ position ) ; $ this -> buffer = ( string ) substr ( $ this -> buffer , $ position ) ; return $ data ; }
Reads data from the stream socket resource based on set length and read-to byte.

@param resource $resource
@param int $length
@param string|null $byte

@return string
Reads data from the stream socket resource based on set length and read - to byte .