Yii2集成Mobile Detect类库

 提示:转载请注明原文链接

 本文永久链接:https://360us.net/article/43.html

Mobile Detect类库作为一个组件引入到Yii2里面去。

首先需要先用Composer安装Mobile Detectcomposer require mobiledetect/mobiledetectlib


然后新建一个DeviceDetect类:

<?php
namespace common\service;

use Yii;
use yii\base\Object;

use Detection\MobileDetect;

/**
 * 移动设备检测功能
 * @link http://mobiledetect.net/
 * @link https://www.360us.net/
 *
 * @example
 * //注册一个检测移动设备组件
 * Yii::$app->set('deviceDetect', [
 *     'class' => 'common\service\DeviceDetect',
 * ]);
 * //使用
 * Yii::$app->deviceDetect->isMobile();
 *
 * Class Mobile
 * @package common\service
 */
class DeviceDetect extends Object
{
    //MobileDetect对象
    protected $detector;

    //初始化
    public function init()
    {
        parent::init();

        $this->detector = new MobileDetect();
    }

    public function __call($name, $params)
    {
        return call_user_func_array(
            array($this->detector, $name),
            $params
        );
    }
}


这里我们继承Object而不是继承Component,这是因为Component比Object重量级。


然后用法就是,可以在配置文件里面components选择里面配置之后使用:

'deviceDetect' => [
    'class' => 'common\service\DeviceDetect',
],

这样配置的话,每次请求都会加载。

也可以在需要用的时候在注册:

Yii::$app->set('deviceDetect', [
    'class' => 'common\service\DeviceDetect',
]);

使用:

Yii::$app->deviceDetect->isMobile();

所有Mobile Detect库所提供的方法都可以通过Yii::$app->deviceDetect来访问。

 评论
昵称
邮箱
网址
最多500个字符