把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重量级。
然后用法就是,可以在配置文件里面components选择里面配置之后使用:
'deviceDetect' => [ 'class' => 'common\service\DeviceDetect', ],
这样配置的话,每次请求都会加载。
也可以在需要用的时候在注册:
Yii::$app->set('deviceDetect', [ 'class' => 'common\service\DeviceDetect', ]);
使用:
Yii::$app->deviceDetect->isMobile();
所有Mobile Detect
库所提供的方法都可以通过Yii::$app->deviceDetect
来访问。
本文链接:https://360us.net/article/43.html