PHP code example of tomphp / container-configurator
1. Go to this page and download the library: Download tomphp/container-configurator library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
tomphp / container-configurator example snippets
use League\Container\Container; // or Pimple\Container
use TomPHP\ContainerConfigurator\Configurator;
$config = [
'db' => [
'name' => 'example_db',
'username' => 'dbuser',
'password' => 'dbpass',
],
'di' => [
'services' => [
'database_connection' => [
'class' => DatabaseConnection::class,
'arguments' => [
'config.db.name',
'config.db.username',
'config.db.password',
],
],
],
],
];
$container = new Container();
Configurator::apply()->configFromArray($config)->to($container);
$db = $container->get('database_connection');
Configurator::apply()
->configFromFile('config_dir/config.global.php')
->configFromFiles('json_dir/*.json')
->configFromFiles('config_dir/*.local.php')
->to($container);
$config = [
'db' => [
'name' => 'example_db',
'username' => 'dbuser',
'password' => 'dbpass',
],
];
$container = new Container();
Configurator::apply()->configFromArray($config)->to($container);
var_dump($container->get('config.db.name'));
/*
* OUTPUT:
* string(10) "example_db"
*/
$config = [
'db' => [
'name' => 'example_db',
'username' => 'dbuser',
'password' => 'dbpass',
],
];
$container = new Container();
Configurator::apply()->configFromArray($config)->to($container);
var_dump($container->get('config.db'));
/*
* OUTPUT:
* array(3) {
* ["name"]=>
* string(10) "example_db"
* ["username"]=>
* string(6) "dbuser"
* ["password"]=>
* string(6) "dbpass"
* }
*/
$config = [
'di' => [
'services' => [
'logger' => [
'class' => Logger::class,
'singleton' => true,
'arguments' => [
StdoutLogger::class,
],
'methods' => [
'setLogLevel' => [ 'info' ],
],
],
StdoutLogger::class => [],
],
],
];
$container = new Container();
Configurator::apply()->configFromArray($config)->to($container);
$logger = $container->get('logger'));
$config = [
'database' => [ /* ... */ ],
'di' => [
'services' => [
DatabaseConnection::class => [
'service' => MySQLDatabaseConnection::class,
],
MySQLDatabaseConnection::class => [
'arguments' => [
'config.database.host',
'config.database.username',
'config.database.password',
'config.database.dbname',
],
],
],
],
];
$appConfig = [
'db' => [
'host' => 'localhost',
'database' => 'example_db',
'username' => 'example_user',
'password' => 'example_password',
],
'di' => [
'services' => [
'database' => [
'factory' => MySQLPDOFactory::class,
'singleton' => true,
'arguments' => [
'config.db.host',
'config.db.database',
'config.db.username',
'config.db.password',
],
],
],
],
];
class MySQLPDOFactory
{
public function __invoke($host, $database, $username, $password)
{
$dsn = "mysql:host=$host;dbname=$database";
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $pdo;
}
}
$config = [
'di' => [
'services' => [
ContainerAwareService::class => [
'arguments' => [Configurator::container()],
],
],
],
];
$appConfig = [
'di' => [
'inflectors' => [
LoggerAwareInterface::class => [
'setLogger' => ['Some\Logger']
],
],
],
];
Configurator::apply()
->configFromFiles('*.cfg.php'),
->withSetting(Configurator::SETTING_PREFIX, 'settings')
->withSetting(Configurator::SETTING_SEPARATOR, '/')
->to($container);
Configurator::apply()
->withFileReader('.xml', MyCustomXMLFileReader::class)
->configFromFile('config.xml'),
->to($container);
Configurator::apply()
->withContainerAdapter(MyContainer::class, MyContainerAdapter::class)
->configFromArray($appConfig),
->to($container);