protected function isStreamReadable($stream)
    {
        if (empty($stream)) {
            return false;
        }
        if ($stream instanceof StreamInterface) {
            return $stream->isReadable();
        }

        // Ensure resource is stream type
        if (!is_resource($stream)) {
            return false;
        }
        if (get_resource_type($stream) !== 'stream') {
            return false;
        }

        // Ensure stream is readable
        $meta = stream_get_meta_data($stream);
        return isset($meta['mode']) && (strstr($meta['mode'], 'r') || strstr($meta['mode'], '+'));
    }
protected function isStreamReadable($stream)
    {
        if (empty($stream)) {
            return false;
        }
        if ($stream instanceof StreamInterface) {
            return $stream->isReadable();
        }

        // Ensure resource is stream type
        if (!is_resource($stream)) {
            return false;
        }
        if (get_resource_type($stream) !== 'stream') {
            return false;
        }

        // Ensure stream is readable
        $meta = stream_get_meta_data($stream);
        return isset($meta['mode']) && (strstr($meta['mode'], 'r') || strstr($meta['mode'], '+'));
    }
protected function isStreamReadable ( $ stream ) { if ( empty ( $ stream ) ) { return false ; } if ( $ stream instanceof StreamInterface ) { return $ stream -> isReadable ( ) ; } // Ensure resource is stream type if ( ! is_resource ( $ stream ) ) { return false ; } if ( get_resource_type ( $ stream ) !== 'stream' ) { return false ; } // Ensure stream is readable $ meta = stream_get_meta_data ( $ stream ) ; return isset ( $ meta [ 'mode' ] ) && ( strstr ( $ meta [ 'mode' ] , 'r' ) || strstr ( $ meta [ 'mode' ] , '+' ) ) ; }
Validate the stream resource is readable

@param mixed $stream
@return bool
Validate the stream resource is readable