gpt4 book ai didi

php - 超薄 DI 容器

转载 作者:搜寻专家 更新时间:2023-10-31 21:02:41 26 4
gpt4 key购买 nike

我的 Slim 3 应用索引结构是:

// Instantiate the app
$config = require __DIR__ . '/../src/config.php';
$app = new \Slim\App($config);

// Set up dependencies
require __DIR__ . '/../src/dependencies.php';

// Register middleware
require __DIR__ . '/../src/middleware.php';

// Register routes
require __DIR__ . '/../src/routes.php';

// Run app
$app->run();

我有单独的 worker.php 文件,它通过 bash 脚本执行,并且这个文件在后台不停地运行(监听一些事件)。

我如何在我的 worker.php 文件中注入(inject)服务,该文件不是 Slim 应用程序的一部分或来自 dependencies.php 的 $container,例如我想使用 Monolog 记录器。依赖项:

$container = $app->getContainer();

/**@var \App\model\Model access to Model methods */
$model = new \App\model\Loan($app->getContainer()->get('settings')['db']);

$container['logger'] = function ($c) {
$settings = $c->get('settings')['logger'];
$logger = new Monolog\Logger($settings['name']);
$logger->pushProcessor(new Monolog\Processor\UidProcessor());
$logger->pushHandler(new Monolog\Handler\StreamHandler($settings['path'], Monolog\Logger::DEBUG));
return $logger;
};

最佳答案

最简单的方法是在 worker.php 中使用相同的 DI 容器

引用: https://github.com/slimphp/Slim/blob/3.x/Slim/Container.php

$config = require __DIR__ . '/../src/config.php';
$container = new \Slim\Container($config);
require __DIR__ . '/../src/dependencies.php';

关于php - 超薄 DI 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38892998/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com