编程语言
首页 > 编程语言> > 如何从index.php调用独白?

如何从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,php-di
来源: https://codeday.me/bug/20191210/2104834.html