Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. IniFileLoader.php

class IniFileLoader

IniFileLoader loads parameters from INI files.

@author Fabien Potencier <fabien@symfony.com>

Hierarchy

  • class \Symfony\Component\DependencyInjection\Loader\FileLoader extends \Symfony\Component\Config\Loader\FileLoader
    • class \Symfony\Component\DependencyInjection\Loader\IniFileLoader extends \Symfony\Component\DependencyInjection\Loader\FileLoader

Expanded class hierarchy of IniFileLoader

2 files declare their use of IniFileLoader
ExtensionTrait.php in vendor/symfony/dependency-injection/Extension/ExtensionTrait.php
Kernel.php in vendor/symfony/http-kernel/Kernel.php

File

vendor/symfony/dependency-injection/Loader/IniFileLoader.php, line 22

Namespace

Symfony\Component\DependencyInjection\Loader
View source
class IniFileLoader extends FileLoader {
    public function load(mixed $resource, ?string $type = null) : mixed {
        $path = $this->locator
            ->locate($resource);
        $this->container
            ->fileExists($path);
        // first pass to catch parsing errors
        $result = parse_ini_file($path, true);
        if (false === $result || [] === $result) {
            throw new InvalidArgumentException(\sprintf('The "%s" file is not valid.', $resource));
        }
        // real raw parsing
        $result = parse_ini_file($path, true, \INI_SCANNER_RAW);
        if (isset($result['parameters']) && \is_array($result['parameters'])) {
            foreach ($result['parameters'] as $key => $value) {
                if (\is_array($value)) {
                    $this->container
                        ->setParameter($key, array_map($this->phpize(...), $value));
                }
                else {
                    $this->container
                        ->setParameter($key, $this->phpize($value));
                }
            }
        }
        if ($this->env && \is_array($result['parameters@' . $this->env] ?? null)) {
            foreach ($result['parameters@' . $this->env] as $key => $value) {
                $this->container
                    ->setParameter($key, $this->phpize($value));
            }
        }
        return null;
    }
    public function supports(mixed $resource, ?string $type = null) : bool {
        if (!\is_string($resource)) {
            return false;
        }
        if (null === $type && 'ini' === pathinfo($resource, \PATHINFO_EXTENSION)) {
            return true;
        }
        return 'ini' === $type;
    }
    
    /**
     * Note that the following features are not supported:
     *  * strings with escaped quotes are not supported "foo\"bar";
     *  * string concatenation ("foo" "bar").
     */
    private function phpize(string $value) : mixed {
        // trim on the right as comments removal keep whitespaces
        if ($value !== ($v = rtrim($value))) {
            $value = '""' === substr_replace($v, '', 1, -1) ? substr($v, 1, -1) : $v;
        }
        $lowercaseValue = strtolower($value);
        return match (true) {    \defined($value) => \constant($value),
            'yes' === $lowercaseValue, 'on' === $lowercaseValue => true,
            'no' === $lowercaseValue, 'off' === $lowercaseValue, 'none' === $lowercaseValue => false,
            isset($value[1]) && ("'" === $value[0] && "'" === $value[\strlen($value) - 1] || '"' === $value[0] && '"' === $value[\strlen($value) - 1]) => substr($value, 1, -1),
            default => XmlUtils::phpize($value),
        
        };
    }

}

Members

Title Sort descending Modifiers Object type Summary Overrides
FileLoader::$aliases protected property @var array&lt;string, Alias&gt;
FileLoader::$autoRegisterAliasesForSinglyImplementedInterfaces protected property 3
FileLoader::$extensionConfigs protected property
FileLoader::$importing protected property
FileLoader::$instanceof protected property
FileLoader::$interfaces protected property
FileLoader::$isLoadingInstanceof protected property
FileLoader::$singlyImplemented protected property
FileLoader::addContainerExcludedTag private function
FileLoader::ANONYMOUS_ID_REGEXP public constant
FileLoader::findClasses private function
FileLoader::import public function
FileLoader::loadExtensionConfig final protected function
FileLoader::loadExtensionConfigs final protected function
FileLoader::registerAliasesForSinglyImplementedInterfaces public function
FileLoader::registerClasses public function Registers a set of classes as services using PSR-4 for discovery.
FileLoader::setDefinition protected function Registers a definition in the container with its instanceof-conditionals.
FileLoader::__construct public function 1
IniFileLoader::load public function
IniFileLoader::phpize private function Note that the following features are not supported:
IniFileLoader::supports public function
RSS feed
Powered by Drupal