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配置为可编译,则需要将每个环境编译到一个单独的文件中,以避免混淆。

阅读 性能 文档,以了解有关编译容器的信息。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/php-di/6.0/envi...

译文地址:https://learnku.com/docs/php-di/6.0/envi...

上一篇 下一篇
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~