A lightweight configuration bridge for Symfony components that provides easy environment and YAML configuration management with dependency injection container support.
composer require vigihdev/symfony-bridge-configuse VigihDev\SymfonyBridge\Config\ConfigBridge;
use VigihDev\SymfonyBridge\Config\Service\ServiceLocator;
require __DIR__ . '/vendor/autoload.php';
// Boot with automatic configuration loading
$config = ConfigBridge::boot(__DIR__);
$container = $config->container();
// Access parameters
echo $config->container()->getParameter('app.env');
echo ServiceLocator::getParameter('app.env');use VigihDev\SymfonyBridge\Config\ConfigBridge;
use App\Config\AppConfig;
$config = new ConfigBridge(__DIR__);
$config->loadEnv(); // Load .env file
$config->loadConfig(__DIR__ . '/config'); // Load YAML configs
$config->addConfiguration(new AppConfig()); // Add custom config
$config->compile(); // Compile container
// Use the container
$appConfig = $config->get(AppConfig::class);- Environment Loading: Automatic
.envfile loading withputenv()support - YAML Configuration: Load multiple YAML configuration files
- Custom Configurations: Add Symfony Configuration classes
- Service Locator: Static access to container services and parameters
- Dependency Injection: Full Symfony DI container support
project/
├── .env # Environment variables
├── config/
│ ├── services.yaml # Service definitions
│ └── packages/
│ └── *.yaml # Package configurations
└── src/
└── Config/
└── AppConfig.php # Custom configuration classes
Create a .env file in your project root:
APP_ENV=production
APP_DEBUG=false
DATABASE_URL=mysql://user:pass@localhost/dbnameCreate config/services.yaml:
parameters:
app.env: '%env(APP_ENV)%'
app.debug: '%env(bool:APP_DEBUG)%'
database.url: '%env(DATABASE_URL)%'
services:
App\Service\MyService:
arguments:
- '%app.env%'use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;
class AppConfig implements ConfigurationInterface
{
public function getConfigTreeBuilder(): TreeBuilder
{
$treeBuilder = new TreeBuilder('app');
$rootNode = $treeBuilder->getRootNode();
$rootNode
->children()
->scalarNode('env')->defaultValue('dev')->end()
->scalarNode('debug')->defaultTrue()->end()
->arrayNode('database')
->children()
->scalarNode('host')->defaultValue('localhost')->end()
->scalarNode('port')->defaultValue('3306')->end()
->end()
->end()
->end();
return $treeBuilder;
}
}ConfigBridge::boot(string $basePath, string $configDir = 'config'): static- Bootstrap with automatic configuration loading
__construct(string $basePath)loadEnv(?string $path = null): voidloadConfig(string $configDir): voidaddConfiguration(ConfigurationInterface $config, ?string $id = null): voidcompile(): ContainerBuilderget(string $id): ?objecthas(string $id): boolcontainer(): ContainerBuilder
ServiceLocator::setContainer(ContainerInterface $container): voidServiceLocator::getContainer(): ContainerInterfaceServiceLocator::get(string $id): objectServiceLocator::getParameter(string $name): mixedServiceLocator::hasParameter(string $name): boolServiceLocator::has(string $id): bool
Run the test suite:
./vendor/bin/phpunitTest coverage includes:
- Environment variable loading
- YAML configuration parsing
- Service container management
- Configuration object registration
- ServiceLocator functionality
- Integration testing
- PHP 8.1+
- Symfony Config Component
- Symfony DependencyInjection Component
- Symfony Dotenv Component
This project is licensed under the MIT License.