3

我正在尝试获取访问我们应用程序的设备的详细信息。我已经在 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"

请帮我解决这个问题。

4

1 回答 1

2

问题在于$thiswhich 假定为您的控制器类的一个实例,但它是 null 这意味着您正在调用它的某个地方(可能在控制器构造函数中)还没有$this

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

class MyController
{
    // ...

    protected $mobileDetector;

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

    // ...
}
于 2018-11-30T08:13:28.387 回答