Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/StreamWrapper/StreamWrapperManagerInterface.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Core/StreamWrapper/StreamWrapperManagerInterface.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,172 @@ +<?php + +namespace Drupal\Core\StreamWrapper; + +/** + * Provides a StreamWrapper manager. + * + * @see \Drupal\Core\StreamWrapper\StreamWrapperInterface + */ +interface StreamWrapperManagerInterface { + + /** + * Provides Drupal stream wrapper registry. + * + * 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. + * + * Provide a facility for managing and querying user-defined stream wrappers + * in PHP. PHP's internal stream_get_wrappers() doesn't return the class + * registered to handle a stream, which we need to be able to find the + * handler + * for class instantiation. + * + * If a module registers a scheme that is already registered with PHP, the + * existing scheme will be unregistered and replaced with the specified + * class. + * + * A stream is referenced as "scheme://target". + * + * The optional $filter parameter can be used to retrieve only the stream + * wrappers that are appropriate for particular usage. For example, this + * returns only stream wrappers that use local file storage: + * + * @code + * $stream_wrapper_manager = \Drupal::service('stream_wrapper_manager'); + * $local_stream_wrappers = $stream_wrapper_manager->getWrappers(StreamWrapperInterface::LOCAL); + * @endcode + * + * The $filter parameter can only filter to types containing a particular + * flag. In some cases, you may want to filter to types that do not contain a + * particular flag. For example, you may want to retrieve all stream wrappers + * that are not writable, or all stream wrappers that are not local. PHP's + * array_diff_key() function can be used to help with this. For example, this + * returns only stream wrappers that do not use local file storage: + * @code + * $stream_wrapper_manager = \Drupal::service('stream_wrapper_manager'); + * $remote_stream_wrappers = array_diff_key( + * $stream_wrapper_manager->getWrappers(StreamWrapperInterface::ALL), + * $stream_wrapper_manager->getWrappers(StreamWrapperInterface::LOCAL) + * ); + * @endcode + * + * @param int $filter + * (Optional) Filters out all types except those with an on bit for each on + * bit in $filter. For example, if $filter is + * StreamWrapperInterface::WRITE_VISIBLE, which is equal to + * (StreamWrapperInterface::READ | StreamWrapperInterface::WRITE | + * StreamWrapperInterface::VISIBLE), then only stream wrappers with all + * three of these bits set are returned. Defaults to + * StreamWrapperInterface::ALL, which returns all registered stream + * wrappers. + * + * @return array + * An array keyed by scheme, with values containing an array of information + * about the stream wrapper, as returned by hook_stream_wrappers(). If + * $filter is omitted or set to StreamWrapperInterface::ALL, the entire + * Drupal stream wrapper registry is returned. Otherwise only the stream + * wrappers whose 'type' bitmask has an on bit for each bit specified in + * $filter are returned. + */ + public function getWrappers($filter = StreamWrapperInterface::ALL); + + /** + * Returns registered stream wrapper names. + * + * @param int $filter + * (Optional) Filters out all types except those with an on bit for each on + * bit in $filter. For example, if $filter is + * StreamWrapperInterface::WRITE_VISIBLE, which is equal to + * (StreamWrapperInterface::READ | StreamWrapperInterface::WRITE | + * StreamWrapperInterface::VISIBLE), then only stream wrappers with all + * three of these bits set are returned. Defaults to + * StreamWrapperInterface::ALL, which returns all registered stream + * wrappers. + * + * @return array + * Stream wrapper names, keyed by scheme. + */ + public function getNames($filter = StreamWrapperInterface::ALL); + + /** + * Returns registered stream wrapper descriptions. + * + * @param int $filter + * (Optional) Filters out all types except those with an on bit for each on + * bit in $filter. For example, if $filter is + * StreamWrapperInterface::WRITE_VISIBLE, which is equal to + * (StreamWrapperInterface::READ | StreamWrapperInterface::WRITE | + * StreamWrapperInterface::VISIBLE), then only stream wrappers with all + * three of these bits set are returned. Defaults to + * StreamWrapperInterface::ALL, which returns all registered stream + * wrappers. + * + * @return array + * Stream wrapper descriptions, keyed by scheme. + */ + public function getDescriptions($filter = StreamWrapperInterface::ALL); + + /** + * Returns a reference to the stream wrapper class responsible for a scheme. + * + * This helper method returns a stream instance using a scheme. That is, the + * passed string does not contain a "://". For example, "public" is a scheme + * but "public://" is a URI (stream). This is because the later contains both + * a scheme and target despite target being empty. + * + * Note: the instance URI will be initialized to "scheme://" so that you can + * make the customary method calls as if you had retrieved an instance by URI. + * + * @param string $scheme + * If the stream was "public://target", "public" would be the scheme. + * + * @return \Drupal\Core\StreamWrapper\StreamWrapperInterface|bool + * Returns a new stream wrapper object appropriate for the given $scheme. + * For example, for the public scheme a stream wrapper object + * (Drupal\Core\StreamWrapper\PublicStream). + * FALSE is returned if no registered handler could be found. + */ + public function getViaScheme($scheme); + + /** + * Returns a reference to the stream wrapper class responsible for a URI. + * + * The scheme determines the stream wrapper class that should be + * used by consulting the stream wrapper registry. + * + * @param string $uri + * A stream, referenced as "scheme://target". + * + * @return \Drupal\Core\StreamWrapper\StreamWrapperInterface|bool + * Returns a new stream wrapper object appropriate for the given URI or + * FALSE if no registered handler could be found. For example, a URI of + * "private://example.txt" would return a new private stream wrapper object + * (Drupal\Core\StreamWrapper\PrivateStream). + */ + public function getViaUri($uri); + + /** + * Returns the stream wrapper class name for a given scheme. + * + * @param string $scheme + * Stream scheme. + * + * @return string|bool + * Return string if a scheme has a registered handler, or FALSE. + */ + public function getClass($scheme); + + /** + * Registers stream wrapper with PHP. + * + * @param string $scheme + * The scheme of the stream wrapper. + * @param string $class + * The class of the stream wrapper. + * @param int $type + * The type of the stream wrapper. + */ + public function registerWrapper($scheme, $class, $type); + +}