【发布时间】:2021-06-18 09:54:25
【问题描述】:
我正在尝试通过类型提示在方法中使用依赖注入。它不适合我。调用$container->get(Name::class); 有效
if (false === file_exists(__DIR__ . '/../vendor/autoload.php')) {
die('Install the composer dependencies');
}
require __DIR__ . '/../vendor/autoload.php';
//(new Dotenv())->bootEnv(dirname(__DIR__) . '/.env');
/* Load external routes file */
require_once dirname(__DIR__) . '/config/routes.php';
$builder = new DI\ContainerBuilder();
$builder->addDefinitions(dirname(__DIR__) . '/config/Definitions.php');
try {
$builder->useAutowiring(true);
$container = $builder->build();
} catch (Exception $e) {
die($e->getMessage());
}
function test(Cache $cache)
{
dd($cache);
}
test();
die;
定义文件
<?php
declare(strict_types = 1);
use Psr\Container\ContainerInterface;
require dirname(__DIR__) . '/config/config.php';
return [
Cache::class => DI\create(Cache::class)->constructor(MEMCACHED_SERVERS),
\Twig\Environment::class => function () {
$loader = new \Twig\Loader\FilesystemLoader(dirname(__DIR__) . '/Views/');
$twig = new \Twig\Environment($loader, [
'cache' => dirname(__DIR__) . '/Cache/'
]);
return $twig;
},
];
我得到的错误:
致命错误:未捕获的 ArgumentCountError:参数太少 函数 test(), 0 通过
【问题讨论】: