StorageInterface.php

Same filename in other branches
  1. 9 core/lib/Drupal/Core/Config/StorageInterface.php
  2. 8.9.x core/lib/Drupal/Core/Config/StorageInterface.php
  3. 10 core/lib/Drupal/Core/Config/StorageInterface.php

Namespace

Drupal\Core\Config

File

core/lib/Drupal/Core/Config/StorageInterface.php

View source
<?php

namespace Drupal\Core\Config;


/**
 * Defines an interface for configuration storage.
 *
 * Classes implementing this interface allow reading and writing configuration
 * data from and to the storage.
 *
 * Note: this should never be used directly to work with active configuration.
 * The values returned from it do not have the expected overrides and writing
 * directly to the storage does not trigger configuration events. Use the
 * 'config.factory' service and the configuration objects it provides.
 */
interface StorageInterface {
    
    /**
     * The default collection name.
     */
    const DEFAULT_COLLECTION = '';
    
    /**
     * Returns whether a configuration object exists.
     *
     * @param string $name
     *   The name of a configuration object to test.
     *
     * @return bool
     *   TRUE if the configuration object exists, FALSE otherwise.
     */
    public function exists($name);
    
    /**
     * Reads configuration data from the storage.
     *
     * @param string $name
     *   The name of a configuration object to load.
     *
     * @return array|false
     *   The configuration data stored for the configuration object name. If no
     *   configuration data exists for the given name, FALSE is returned.
     */
    public function read($name);
    
    /**
     * Reads configuration data from the storage.
     *
     * @param array $names
     *   List of names of the configuration objects to load.
     *
     * @return array
     *   A list of the configuration data stored for the configuration object name
     *   that could be loaded for the passed list of names.
     */
    public function readMultiple(array $names);
    
    /**
     * Writes configuration data to the storage.
     *
     * @param string $name
     *   The name of a configuration object to save.
     * @param array $data
     *   The configuration data to write.
     *
     * @return bool
     *   TRUE on success, FALSE in case of an error.
     *
     * @throws \Drupal\Core\Config\StorageException
     *   If the back-end storage does not exist and cannot be created.
     */
    public function write($name, array $data);
    
    /**
     * Deletes a configuration object from the storage.
     *
     * @param string $name
     *   The name of a configuration object to delete.
     *
     * @return bool
     *   TRUE on success, FALSE otherwise.
     */
    public function delete($name);
    
    /**
     * Renames a configuration object in the storage.
     *
     * @param string $name
     *   The name of a configuration object to rename.
     * @param string $new_name
     *   The new name of a configuration object.
     *
     * @return bool
     *   TRUE on success, FALSE otherwise.
     */
    public function rename($name, $new_name);
    
    /**
     * Encodes configuration data into the storage-specific format.
     *
     * This is a publicly accessible static method to allow for alternative
     * usages in data conversion scripts and also tests.
     *
     * @param array $data
     *   The configuration data to encode.
     *
     * @return string
     *   The encoded configuration data.
     */
    public function encode($data);
    
    /**
     * Decodes configuration data from the storage-specific format.
     *
     * This is a publicly accessible static method to allow for alternative
     * usages in data conversion scripts and also tests.
     *
     * @param string $raw
     *   The raw configuration data string to decode.
     *
     * @return array
     *   The decoded configuration data as an associative array.
     */
    public function decode($raw);
    
    /**
     * Gets configuration object names starting with a given prefix.
     *
     * Given the following configuration objects:
     * - node.type.article
     * - node.type.page
     *
     * Passing the prefix 'node.type.' will return an array containing the above
     * names.
     *
     * @param string $prefix
     *   (optional) The prefix to search for. If omitted, all configuration object
     *   names that exist are returned.
     *
     * @return array
     *   An array containing matching configuration object names.
     */
    public function listAll($prefix = '');
    
    /**
     * Deletes configuration objects whose names start with a given prefix.
     *
     * Given the following configuration object names:
     * - node.type.article
     * - node.type.page
     *
     * Passing the prefix 'node.type.' will delete the above configuration
     * objects.
     *
     * @param string $prefix
     *   (optional) The prefix to search for. If omitted, all configuration
     *   objects that exist will be deleted.
     *
     * @return bool
     *   TRUE on success, FALSE otherwise.
     */
    public function deleteAll($prefix = '');
    
    /**
     * Creates a collection on the storage.
     *
     * A configuration storage can contain multiple sets of configuration objects
     * in partitioned collections. The collection name identifies the current
     * collection used.
     *
     * Implementations of this method must provide a new instance to avoid side
     * effects caused by the fact that Config objects have their storage injected.
     *
     * @param string $collection
     *   The collection name. Valid collection names conform to the following
     *   regex [a-zA-Z_.]. A storage does not need to have a collection set.
     *   However, if a collection is set, then storage should use it to store
     *   configuration in a way that allows retrieval of configuration for a
     *   particular collection.
     *
     * @return $this
     *   A new instance of the storage backend with the collection set.
     */
    public function createCollection($collection);
    
    /**
     * Gets the existing collections.
     *
     * A configuration storage can contain multiple sets of configuration objects
     * in partitioned collections. The collection key name identifies the current
     * collection used.
     *
     * @return array
     *   An array of existing collection names.
     */
    public function getAllCollectionNames();
    
    /**
     * Gets the name of the current collection the storage is using.
     *
     * @return string
     *   The current collection name.
     */
    public function getCollectionName();

}

Interfaces

Title Deprecated Summary
StorageInterface Defines an interface for configuration storage.

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