在 null "Symfony Php" 上调用成员函数 get()

Call to a member function get() on null "Symfony Php"

我正在尝试获取访问我们应用程序的设备的详细信息。我在 php symfony 3.4 版本中集成了“MobileDetectBundle”包,并按照文档中提供的步骤进行操作。但是我在这一行收到以下错误

$mobileDetector = $this->get('mobile_detect.mobile_detector');

代码片段:

$mobileDetector = $this->get('mobile_detect.mobile_detector');
$mobileDetector->isMobile();
$mobileDetector->isTablet();

错误:

"Call to a member function get() on null"

请帮我解决这个问题。

问题出在 $this 上,它假定是您的控制器 class 的一个实例,但它是空的,这意味着您在某个地方(可能在控制器构造函数内部)调用它,其中没有 $this还没有。

解决方案确实是依赖注入。你最好将该服务注入你的控制器(通过自动连接自动定义为服务)并在你的控制器中使用它:

class MyController
{
    // ...

    protected $mobileDetector;

    public function __construct(MobileDetector $mobileDetector)
    {
        $this->mobileDetector = $mobileDetector;
        $this->mobileDetector->isMobile();
        $this->mobileDetector->isTablet();
    }

    // ...
}