dyllen 2015-12-01 10:59:21 9105次浏览 4条评论 13 6 0

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

首先需要先用Composer安装Mobile Detect:composer 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重量级,如果不需要用到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来访问。

觉得很赞
您需要登录后才可以评论。登录 | 立即注册