如何从 index.php 中调用独白?
How to call for a monolog from the index.php?
有使用 Monolog 和 PHP-DI 的例子(来自手册,有 2 个文件 - index.php 和 config.php:
<?php
// config.php
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
return [
// ...
Psr\Log\LoggerInterface::class => DI\factory(function () {
$logger = new Logger('mylog');
$fileHandler = new StreamHandler('path/to/your.log', Logger::DEBUG);
$fileHandler->setFormatter(new LineFormatter());
$logger->pushHandler($fileHandler);
return $logger;
}),
];
此 config.php 在以下代码中使用:
// index.php
use DI\ContainerBuilder;
require __DIR__ . '/../vendor/autoload.php';
$containerBuilder = new ContainerBuilder;
$containerBuilder->addDefinitions(__DIR__ . '/config.php');
$container = $containerBuilder->build();
我现在如何在 index.php 中使用它?我经常这样使用 Monolog:
$log = new Logger('name');
$log->warning('Foo');
但是如何用Container调用呢?
我能够在简单的 $container->set(), $container->get() 模式下完成。但是以这种方式使用 Container Builder 我无法找到一种方法来做到这一点。此外,当我制作 var_dump($container)
时,其中没有任何记录器的标志。
您需要将 $log = new Logger('name')
替换为:
$log = $container->get(\Psr\Log\LoggerInterface::class);
查看文档的这一部分:http://php-di.org/doc/getting-started.html#3-create-the-objects
有使用 Monolog 和 PHP-DI 的例子(来自手册,有 2 个文件 - index.php 和 config.php:
<?php
// config.php
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
return [
// ...
Psr\Log\LoggerInterface::class => DI\factory(function () {
$logger = new Logger('mylog');
$fileHandler = new StreamHandler('path/to/your.log', Logger::DEBUG);
$fileHandler->setFormatter(new LineFormatter());
$logger->pushHandler($fileHandler);
return $logger;
}),
];
此 config.php 在以下代码中使用:
// index.php
use DI\ContainerBuilder;
require __DIR__ . '/../vendor/autoload.php';
$containerBuilder = new ContainerBuilder;
$containerBuilder->addDefinitions(__DIR__ . '/config.php');
$container = $containerBuilder->build();
我现在如何在 index.php 中使用它?我经常这样使用 Monolog:
$log = new Logger('name');
$log->warning('Foo');
但是如何用Container调用呢?
我能够在简单的 $container->set(), $container->get() 模式下完成。但是以这种方式使用 Container Builder 我无法找到一种方法来做到这一点。此外,当我制作 var_dump($container)
时,其中没有任何记录器的标志。
您需要将 $log = new Logger('name')
替换为:
$log = $container->get(\Psr\Log\LoggerInterface::class);
查看文档的这一部分:http://php-di.org/doc/getting-started.html#3-create-the-objects