interface StreamWrapperInterface

Same name in other branches
  1. 7.x includes/stream_wrappers.inc \StreamWrapperInterface
  2. 9 core/lib/Drupal/Core/StreamWrapper/StreamWrapperInterface.php \Drupal\Core\StreamWrapper\StreamWrapperInterface
  3. 8.9.x core/lib/Drupal/Core/StreamWrapper/StreamWrapperInterface.php \Drupal\Core\StreamWrapper\StreamWrapperInterface
  4. 10 core/lib/Drupal/Core/StreamWrapper/StreamWrapperInterface.php \Drupal\Core\StreamWrapper\StreamWrapperInterface

Defines a Drupal stream wrapper extension.

Provides a Drupal interface and classes to implement PHP stream wrappers for public, private, and temporary files. Extends the PhpStreamWrapperInterface with methods expected by Drupal stream wrapper classes.

A stream wrapper is an abstraction of a file system that allows Drupal to use the same set of methods to access both local files and remote resources.

Note that PHP 5.2 fopen() only supports URIs of the form "scheme://target" despite the fact that according to RFC 3986 a URI's scheme component delimiter is in general just ":", not "://". Because of this PHP limitation and for consistency Drupal will only accept URIs of form "scheme://target".

Hierarchy

Expanded class hierarchy of StreamWrapperInterface

All classes that implement StreamWrapperInterface

See also

http://www.faqs.org/rfcs/rfc3986.html

http://bugs.php.net/bug.php?id=47070

14 files declare their use of StreamWrapperInterface
DownloadTest.php in core/modules/migrate/tests/src/Kernel/process/DownloadTest.php
DummyExternalReadOnlyWrapper.php in core/modules/file/tests/file_test/src/StreamWrapper/DummyExternalReadOnlyWrapper.php
DummyRemoteReadOnlyStreamWrapper.php in core/modules/file/tests/file_test/src/StreamWrapper/DummyRemoteReadOnlyStreamWrapper.php
editor.admin.inc in core/modules/editor/editor.admin.inc
Editor.php in core/modules/editor/src/Entity/Editor.php

... See full list

File

core/lib/Drupal/Core/StreamWrapper/StreamWrapperInterface.php, line 23

Namespace

Drupal\Core\StreamWrapper
View source
interface StreamWrapperInterface extends PhpStreamWrapperInterface {
    
    /**
     * Stream wrapper bit flags that are the basis for composite types.
     *
     * Note that 0x0002 is skipped, because it was the value of a constant that
     * has since been removed.
     */
    
    /**
     * A filter that matches all wrappers.
     */
    const ALL = 0x0;
    
    /**
     * Refers to a local file system location.
     */
    const LOCAL = 0x1;
    
    /**
     * Wrapper is readable (almost always true).
     */
    const READ = 0x4;
    
    /**
     * Wrapper is writable.
     */
    const WRITE = 0x8;
    
    /**
     * Exposed in the UI and potentially web accessible.
     */
    const VISIBLE = 0x10;
    
    /**
     * Composite stream wrapper bit flags that are usually used as the types.
     */
    
    /**
     * Defines the stream wrapper bit flag for a hidden file.
     *
     * This is not visible in the UI or accessible via web, but readable and
     * writable; for instance, the temporary directory for file uploads.
     */
    const HIDDEN = 0xc;
    
    /**
     * Hidden, readable and writable using local files.
     */
    const LOCAL_HIDDEN = 0xd;
    
    /**
     * Visible, readable and writable.
     */
    const WRITE_VISIBLE = 0x1c;
    
    /**
     * Visible and read-only.
     */
    const READ_VISIBLE = 0x14;
    
    /**
     * The default 'type' flag.
     *
     * This does not include StreamWrapperInterface::LOCAL, because PHP grants a
     * greater trust level to local files (for example, they can be used in an
     * "include" statement, regardless of the "allow_url_include" setting), so
     * stream wrappers need to explicitly opt-in to this.
     */
    const NORMAL = 0x1c;
    
    /**
     * Visible, readable and writable using local files.
     */
    const LOCAL_NORMAL = 0x1d;
    
    /**
     * Returns the type of stream wrapper.
     *
     * @return int
     */
    public static function getType();
    
    /**
     * Returns the name of the stream wrapper for use in the UI.
     *
     * @return string|\Drupal\Core\StringTranslation\TranslatableMarkup
     *   The stream wrapper name.
     */
    public function getName();
    
    /**
     * Returns the description of the stream wrapper for use in the UI.
     *
     * @return string|\Drupal\Core\StringTranslation\TranslatableMarkup
     *   The stream wrapper description.
     */
    public function getDescription();
    
    /**
     * Sets the absolute stream resource URI.
     *
     * This allows you to set the URI. Generally is only called by the factory
     * method.
     *
     * @param string $uri
     *   A string containing the URI that should be used for this instance.
     */
    public function setUri($uri);
    
    /**
     * Returns the stream resource URI.
     *
     * @return string
     *   Returns the current URI of the instance.
     */
    public function getUri();
    
    /**
     * Returns a web accessible URL for the resource.
     *
     * This function should return a URL that can be embedded in a web page
     * and accessed from a browser. For example, the external URL of
     * "youtube://random_string" might be
     * "http://www.youtube.com/watch?v=random_string".
     *
     * @return string
     *   Returns a string containing a web accessible URL for the resource.
     */
    public function getExternalUrl();
    
    /**
     * Returns canonical, absolute path of the resource.
     *
     * Implementation placeholder. PHP's realpath() does not support stream
     * wrappers. We provide this as a default so that individual wrappers may
     * implement their own solutions.
     *
     * @return string
     *   Returns a string with absolute pathname on success (implemented
     *   by core wrappers), or FALSE on failure or if the registered
     *   wrapper does not provide an implementation.
     */
    public function realpath();
    
    /**
     * Gets the name of the directory from a given path.
     *
     * This method is usually accessed through
     * \Drupal\Core\File\FileSystemInterface::dirname(), which wraps around the
     * normal PHP dirname() function, which does not support stream wrappers.
     *
     * @param string $uri
     *   An optional URI.
     *
     * @return string
     *   A string containing the directory name, or FALSE if not applicable.
     *
     * @see \Drupal\Core\File\FileSystemInterface::dirname()
     */
    public function dirname($uri = NULL);

}

Members

Title Sort descending Modifiers Object type Summary Overrides
PhpStreamWrapperInterface::dir_closedir public function Close directory handle. 2
PhpStreamWrapperInterface::dir_opendir public function Open directory handle. 2
PhpStreamWrapperInterface::dir_readdir public function Read entry from directory handle. 2
PhpStreamWrapperInterface::dir_rewinddir public function Rewind directory handle. 2
PhpStreamWrapperInterface::mkdir public function Create a directory. 2
PhpStreamWrapperInterface::rename public function Renames a file or directory. 2
PhpStreamWrapperInterface::rmdir public function Removes a directory. 2
PhpStreamWrapperInterface::stream_cast public function Retrieve the underlying stream resource. 2
PhpStreamWrapperInterface::stream_close public function Closes stream. 2
PhpStreamWrapperInterface::stream_eof public function Tests for end-of-file on a file pointer. 2
PhpStreamWrapperInterface::stream_flush public function Flushes the output. 2
PhpStreamWrapperInterface::stream_lock public function Advisory file locking. 2
PhpStreamWrapperInterface::stream_metadata public function Sets metadata on the stream. 2
PhpStreamWrapperInterface::stream_open public function Opens file or URL. 2
PhpStreamWrapperInterface::stream_read public function Read from stream. 2
PhpStreamWrapperInterface::stream_seek public function Seeks to specific location in a stream. 2
PhpStreamWrapperInterface::stream_set_option public function Change stream options. 2
PhpStreamWrapperInterface::stream_stat public function Retrieve information about a file resource. 2
PhpStreamWrapperInterface::stream_tell public function Retrieve the current position of a stream. 2
PhpStreamWrapperInterface::stream_truncate public function Truncate stream. 2
PhpStreamWrapperInterface::stream_write public function Write to stream. 2
PhpStreamWrapperInterface::unlink public function Delete a file. 2
PhpStreamWrapperInterface::url_stat public function Retrieve information about a file. 2
StreamWrapperInterface::ALL constant A filter that matches all wrappers.
StreamWrapperInterface::dirname public function Gets the name of the directory from a given path. 2
StreamWrapperInterface::getDescription public function Returns the description of the stream wrapper for use in the UI. 7
StreamWrapperInterface::getExternalUrl public function Returns a web accessible URL for the resource. 7
StreamWrapperInterface::getName public function Returns the name of the stream wrapper for use in the UI. 7
StreamWrapperInterface::getType public static function Returns the type of stream wrapper. 2
StreamWrapperInterface::getUri public function Returns the stream resource URI. 2
StreamWrapperInterface::HIDDEN constant Defines the stream wrapper bit flag for a hidden file.
StreamWrapperInterface::LOCAL constant Refers to a local file system location.
StreamWrapperInterface::LOCAL_HIDDEN constant Hidden, readable and writable using local files.
StreamWrapperInterface::LOCAL_NORMAL constant Visible, readable and writable using local files.
StreamWrapperInterface::NORMAL constant The default 'type' flag.
StreamWrapperInterface::READ constant Wrapper is readable (almost always true).
StreamWrapperInterface::READ_VISIBLE constant Visible and read-only.
StreamWrapperInterface::realpath public function Returns canonical, absolute path of the resource. 2
StreamWrapperInterface::setUri public function Sets the absolute stream resource URI. 2
StreamWrapperInterface::VISIBLE constant Exposed in the UI and potentially web accessible.
StreamWrapperInterface::WRITE constant Wrapper is writable.
StreamWrapperInterface::WRITE_VISIBLE constant Visible, readable and writable.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.