This repository has been archived on 2025-09-29. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
drupalcampbristol/vendor/dflydev/dot-access-configuration/src/Dflydev/DotAccessConfiguration/AbstractConfigurationBuilder.php
2018-11-23 12:29:20 +00:00

94 lines
2.6 KiB
PHP

<?php
/*
* This file is a part of dflydev/dot-access-configuration.
*
* (c) Dragonfly Development Inc.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Dflydev\DotAccessConfiguration;
abstract class AbstractConfigurationBuilder implements ConfigurationBuilderInterface
{
private $configurationFactory;
private $placeholderResolverFactory;
/**
* Set Configuration Factory
*
* @param ConfigurationFactoryInterface $configurationFactory
*
* @return AbstractConfigurationBuilder
*/
public function setConfigurationFactory(ConfigurationFactoryInterface $configurationFactory)
{
$this->configurationFactory = $configurationFactory;
return $this;
}
/**
* Configuration Factory
*
* @return ConfigurationFactoryInterface
*/
protected function configurationFactory()
{
if (null === $this->configurationFactory) {
$this->configurationFactory = new ConfigurationFactory;
}
return $this->configurationFactory;
}
/**
* {@inheritdocs}
*/
public function build()
{
$configuration = $this->configurationFactory()->create();
if (null !== $this->placeholderResolverFactory) {
$placeholderResolver = $this->placeholderResolverFactory->create($configuration);
$configuration->setPlaceholderResolver($placeholderResolver);
}
$this->internalBuild($configuration);
return $configuration;
}
/**
* Set Placeholder Resolver Factory
*
* @param PlaceholderResolverFactoryInterface $placeholderResolverFactory
*/
public function setPlaceholderResolverFactory(PlaceholderResolverFactoryInterface $placeholderResolverFactory)
{
$this->placeholderResolverFactory = $placeholderResolverFactory;
}
/**
* Called to reconfigure the specified Configuration Builder to be similar to this instance
*
* @param AbstractConfigurationBuilder $configurationBuilder
*/
public function reconfigure(AbstractConfigurationBuilder $configurationBuilder)
{
if (null !== $this->placeholderResolverFactory) {
$configurationBuilder->setPlaceholderResolverFactory($this->placeholderResolverFactory);
}
$configurationBuilder->setConfigurationFactory($this->configurationFactory());
}
/**
* Internal build
*
* @param ConfigurationInterface $configuration
*/
abstract protected function internalBuild(ConfigurationInterface $configuration);
}