Symfony 5.4 中有没有办法在应用程序启动时初始化 class
Is there a way in Symfony 5.4 to initialize a class at application's boot
在一个小型 Symfony 5.4 项目中,我想在应用程序启动时初始化一个 class(记录器)。 class 将构建一个单例对象,并让我可以像这样调用记录器 maClass::logger->error().
我翻了一堆关于自动装配的文章。我理解这个概念,但在其他一些 classes 中,我不能使用自动装配,这就是我想这样做的原因。
这是我的新 class:
<?php
namespace App\Core\Service;
use Psr\Log\LoggerInterface;
class CoreService
{
private LoggerInterface $logger;
private static LoggerInterface $loggerSingleton;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
$this->initStatic();
}
public function initStatic()
{
self::$loggerSingleton = $this->logger;
}
public static function logger(): LoggerInterface
{
return self::$loggerSingleton;
}
}
有办法吗?
谢谢。
感谢@ChrisHaas 的帮助。
我重试了 set
方法并且它起作用了,我不得不稍微改变一下我的新方法 class。
我没有在所有控制器中自动装配它,而是创建了一个父控制器,将我的 class(自动装配)初始化为受保护的变量,而不是使用 maClass::logger()->error()
,而是 $this->maClass->logger->error()
.
在一个小型 Symfony 5.4 项目中,我想在应用程序启动时初始化一个 class(记录器)。 class 将构建一个单例对象,并让我可以像这样调用记录器 maClass::logger->error().
我翻了一堆关于自动装配的文章。我理解这个概念,但在其他一些 classes 中,我不能使用自动装配,这就是我想这样做的原因。
这是我的新 class:
<?php
namespace App\Core\Service;
use Psr\Log\LoggerInterface;
class CoreService
{
private LoggerInterface $logger;
private static LoggerInterface $loggerSingleton;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
$this->initStatic();
}
public function initStatic()
{
self::$loggerSingleton = $this->logger;
}
public static function logger(): LoggerInterface
{
return self::$loggerSingleton;
}
}
有办法吗?
谢谢。
感谢@ChrisHaas 的帮助。
我重试了 set
方法并且它起作用了,我不得不稍微改变一下我的新方法 class。
我没有在所有控制器中自动装配它,而是创建了一个父控制器,将我的 class(自动装配)初始化为受保护的变量,而不是使用 maClass::logger()->error()
,而是 $this->maClass->logger->error()
.