public function read(array $options)
    {
        if (!isset($options['file'])) {
            throw MissingOptionException::create('file');
        }

        if (!is_string($options['file'])) {
            throw InvalidOptionTypeException::create('file', 'string');
        }

        if (!is_file($options['file'])) {
            throw FileDoesNotExistException::create($options['file']);
        }

        if (!is_readable($options['file'])) {
            throw FileIsNotReadableException::create($options['file']);
        }

        $file = $this->_factory->createInstance($options['file'], null, $options);

        return $file->getContents();
    }