PhpStorageFactory.php

Same filename and directory in other branches
  1. 8.9.x core/lib/Drupal/Core/PhpStorage/PhpStorageFactory.php
  2. 10 core/lib/Drupal/Core/PhpStorage/PhpStorageFactory.php
  3. 11.x core/lib/Drupal/Core/PhpStorage/PhpStorageFactory.php

Namespace

Drupal\Core\PhpStorage

File

core/lib/Drupal/Core/PhpStorage/PhpStorageFactory.php

View source
<?php

namespace Drupal\Core\PhpStorage;

use Drupal\Core\Site\Settings;
use Drupal\Core\StreamWrapper\PublicStream;

/**
 * Creates a php storage object.
 */
class PhpStorageFactory {
    
    /**
     * Instantiates a storage for generated PHP code.
     *
     * By default, this returns an instance of the
     * \Drupal\Component\PhpStorage\MTimeProtectedFileStorage class.
     *
     * Classes implementing
     * \Drupal\Component\PhpStorage\PhpStorageInterface can be registered for a
     * specific bin or as a default implementation.
     *
     * @param string $name
     *   The name for which the storage should be returned. Defaults to 'default'
     *   The name is also used as the storage bin if one is not specified in the
     *   configuration.
     *
     * @return \Drupal\Component\PhpStorage\PhpStorageInterface
     *   An instantiated storage for the specified name.
     */
    public static function get($name) {
        $configuration = [];
        $overrides = Settings::get('php_storage');
        if (isset($overrides[$name])) {
            $configuration = $overrides[$name];
        }
        elseif (isset($overrides['default'])) {
            $configuration = $overrides['default'];
        }
        // Make sure all the necessary configuration values are set.
        $class = $configuration['class'] ?? 'Drupal\\Component\\PhpStorage\\MTimeProtectedFileStorage';
        if (!isset($configuration['secret'])) {
            $configuration['secret'] = Settings::getHashSalt();
        }
        if (!isset($configuration['bin'])) {
            $configuration['bin'] = $name;
        }
        if (!isset($configuration['directory'])) {
            $configuration['directory'] = PublicStream::basePath() . '/php';
        }
        return new $class($configuration);
    }

}

Classes

Title Deprecated Summary
PhpStorageFactory Creates a php storage object.

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