/** * streamWrapper::stream_open — Opens file or URL * * @param string $path Specifies the URL that was passed to the original function. * @param string $mode The mode used to open the file, as detailed for fopen(). * @param integer $options Holds additional flags set by the streams API. It can hold one or more of * the following values OR'd together. * STREAM_USE_PATH If path is relative, search for the resource using * the include_path. * STREAM_REPORT_ERRORS If this flag is set, you are responsible for raising * errors using trigger_error() during opening of the * stream. If this flag is not set, you should not raise * any errors. * @param string $opened_path If the path is opened successfully, and STREAM_USE_PATH is set in options, opened_path * should be set to the full path of the file/resource that was actually opened. * @return boolean Returns TRUE on success or FALSE on failure. */ public function stream_open($path, $mode, $options, &$opened_path) { try { $path = $this->getPath($path); $resolver = $this->createBufferFactoryResolver(); $factory = $resolver->findFactory($path, $mode); $this->fileBuffer = $factory->createFileBuffer($path, $mode); $this->path = $path; if (self::maskHasFlag($options, STREAM_USE_PATH)) { $opened_path = $this->path->getUrl(); } return true; } catch (\Exception $e) { if (self::maskHasFlag($options, STREAM_REPORT_ERRORS)) { trigger_error($e->getMessage(), E_USER_WARNING); } return false; } }