public function load(array $options = [])
    {
        $options = array_replace_recursive(
            $this->getOption('loadOptions', []),
            $options
        );

        // Simple shortcuts
        $options['readerOptions']['file'] = $options['readerOptions']['file'] ?? $options['file'];
        $options['readerOptions']['data'] = $options['readerOptions']['data'] ?? $options['data'];

        $reader = $this->getReader();
        $data = $reader->read($options['readerOptions']);

        if ($options['processImports'] && isset($data['import'])) {
            if (!is_array($data['import'])) {
                throw ImportException::create('"import" parameter must be an array.');
            }

            foreach ($data['import'] as $importData) {
                if (!is_array($importData)) {
                    throw ImportException::create('Each "import" array element must be an array.');
                }

                if (isset($importData['file'])) {
                    if ($options['file']) {
                        $importData['file'] = $importData['file']{0} === '/' ?
                            $importData['file'] :
                            dirname($options['file']).'/'.$importData['file'];
                    }

                    if (!is_file($importData['file'])) {
                        continue;
                    }
                }

                $readOptions = array_replace_recursive($options['readerOptions'], $importData);
                $data = array_replace_recursive($data, $reader->read($readOptions));
            }
        }

        if ($options['clearFirst']) {
            $this->setData([], false);
        }

        if ($options['loadInKey'] !== null) {
            if (!is_string($options['loadInKey'])) {
                throw InvalidOptionTypeException::create('loadInKey', 'string');
            }

            $this->set(
                $options['loadInKey'],
                $this->replaceTemplateVariables(array_replace_recursive($this->get($options['loadInKey'], []), $data))
            );
        } else {
            $this->setData(array_replace_recursive($this->getData(), $data));
        }

        /** @var Callable $callable */
        $callable = $this->getOption('onAfterLoad');

        if (!is_callable($callable)) {
            throw new \RuntimeException('Option "onAfterLoad" must be a callable.');
        }

        call_user_func_array($callable, [$this, $options]);

        return $this;
    }
public function load(array $options = [])
    {
        $options = array_replace_recursive(
            $this->getOption('loadOptions', []),
            $options
        );

        // Simple shortcuts
        $options['readerOptions']['file'] = $options['readerOptions']['file'] ?? $options['file'];
        $options['readerOptions']['data'] = $options['readerOptions']['data'] ?? $options['data'];

        $reader = $this->getReader();
        $data = $reader->read($options['readerOptions']);

        if ($options['processImports'] && isset($data['import'])) {
            if (!is_array($data['import'])) {
                throw ImportException::create('"import" parameter must be an array.');
            }

            foreach ($data['import'] as $importData) {
                if (!is_array($importData)) {
                    throw ImportException::create('Each "import" array element must be an array.');
                }

                if (isset($importData['file'])) {
                    if ($options['file']) {
                        $importData['file'] = $importData['file']{0} === '/' ?
                            $importData['file'] :
                            dirname($options['file']).'/'.$importData['file'];
                    }

                    if (!is_file($importData['file'])) {
                        continue;
                    }
                }

                $readOptions = array_replace_recursive($options['readerOptions'], $importData);
                $data = array_replace_recursive($data, $reader->read($readOptions));
            }
        }

        if ($options['clearFirst']) {
            $this->setData([], false);
        }

        if ($options['loadInKey'] !== null) {
            if (!is_string($options['loadInKey'])) {
                throw InvalidOptionTypeException::create('loadInKey', 'string');
            }

            $this->set(
                $options['loadInKey'],
                $this->replaceTemplateVariables(array_replace_recursive($this->get($options['loadInKey'], []), $data))
            );
        } else {
            $this->setData(array_replace_recursive($this->getData(), $data));
        }

        /** @var Callable $callable */
        $callable = $this->getOption('onAfterLoad');

        if (!is_callable($callable)) {
            throw new \RuntimeException('Option "onAfterLoad" must be a callable.');
        }

        call_user_func_array($callable, [$this, $options]);

        return $this;
    }
public function load ( array $ options = [ ] ) { $ options = array_replace_recursive ( $ this -> getOption ( 'loadOptions' , [ ] ) , $ options ) ; // Simple shortcuts $ options [ 'readerOptions' ] [ 'file' ] = $ options [ 'readerOptions' ] [ 'file' ] ?? $ options [ 'file' ] ; $ options [ 'readerOptions' ] [ 'data' ] = $ options [ 'readerOptions' ] [ 'data' ] ?? $ options [ 'data' ] ; $ reader = $ this -> getReader ( ) ; $ data = $ reader -> read ( $ options [ 'readerOptions' ] ) ; if ( $ options [ 'processImports' ] && isset ( $ data [ 'import' ] ) ) { if ( ! is_array ( $ data [ 'import' ] ) ) { throw ImportException :: create ( '"import" parameter must be an array.' ) ; } foreach ( $ data [ 'import' ] as $ importData ) { if ( ! is_array ( $ importData ) ) { throw ImportException :: create ( 'Each "import" array element must be an array.' ) ; } if ( isset ( $ importData [ 'file' ] ) ) { if ( $ options [ 'file' ] ) { $ importData [ 'file' ] = $ importData [ 'file' ] { 0 } === '/' ? $ importData [ 'file' ] : dirname ( $ options [ 'file' ] ) . '/' . $ importData [ 'file' ] ; } if ( ! is_file ( $ importData [ 'file' ] ) ) { continue ; } } $ readOptions = array_replace_recursive ( $ options [ 'readerOptions' ] , $ importData ) ; $ data = array_replace_recursive ( $ data , $ reader -> read ( $ readOptions ) ) ; } } if ( $ options [ 'clearFirst' ] ) { $ this -> setData ( [ ] , false ) ; } if ( $ options [ 'loadInKey' ] !== null ) { if ( ! is_string ( $ options [ 'loadInKey' ] ) ) { throw InvalidOptionTypeException :: create ( 'loadInKey' , 'string' ) ; } $ this -> set ( $ options [ 'loadInKey' ] , $ this -> replaceTemplateVariables ( array_replace_recursive ( $ this -> get ( $ options [ 'loadInKey' ] , [ ] ) , $ data ) ) ) ; } else { $ this -> setData ( array_replace_recursive ( $ this -> getData ( ) , $ data ) ) ; } /** @var Callable $callable */ $ callable = $ this -> getOption ( 'onAfterLoad' ) ; if ( ! is_callable ( $ callable ) ) { throw new \ RuntimeException ( 'Option "onAfterLoad" must be a callable.' ) ; } call_user_func_array ( $ callable , [ $ this , $ options ] ) ; return $ this ; }
Loads the configuration using the reader instance.

@param array $options - Options.

@throws InvalidOptionTypeException
@throws ImportException

@return $this
Loads the configuration using the reader instance .