6.4. Injections depending on the environment
取决于环境的注入
您可能要根据环境注入不同的参数或对象,例如:
<?php
return [
// 这些值根据环境而变化
'db.host' => 'localhost',
'db.port' => 3336,
'DbAdapter' => DI\create()
->constructor(DI\get('db.host'), DI\get('db.port')),
];
为此,您可以创建一个主config.php
文件,并为每种环境提供较细分的配置文件:
<?php
// 生产环境
// config.prod.php
return [
'db.host' => '178.231.21.29',
'db.port' => 5000,
];
<?php
// 开发环境
// config.dev.php
return [
'db.host' => 'localhost',
'db.port' => 3336,
];
<?php
// 主文件
// config.php
return [
'DbAdapter' => DI\create()
->constructor(DI\get('db.host'), DI\get('db.port')),
];
然后,您可以配置容器来包含正确的文件:
$builder = new ContainerBuilder();
// 主配置文件
$builder->addDefinitions("config.php");
// 细分配置文件
$builder->addDefinitions("config.$environment.php");
$container = $builder->build();
编译
如果将PHP-DI配置为可编译,则需要将每个环境编译到一个单独的文件中,以避免混淆。
阅读 性能 文档,以了解有关编译容器的信息。
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。