CakePHP3:モバイル端末を検出する

サーバ側でモバイル端末を識別するニーズがあり、MobileDetectというのを導入してみました:

mobiledetect.net

導入方法ですが、composerを使うと簡単です:

composer require mobiledetect/mobiledetectlib

Cakeの中のプログラムから利用するには、useを使います。 今回はMobileDetectのラッパーのコンポーネントを作成しました:

<?php
namespace App\Controller\Component;

use Cake\Controller\Component;
use Cake\Controller\ComponentRegistry;
use Mobile_Detect;

/**
 * MobileDetectWrapper component
 */
class MobileDetectWrapperComponent extends Component
{

    private $mobileDetect;

    /**
     * Default configuration.
     *
     * @var array
     */
    protected $_defaultConfig = [];

    public function initialize(array $config)
    {
        $this->mobileDetect = new Mobile_Detect;
    }

    public function isMobile()
    {
        return $this->mobileDetect->isMobile();
    }
}

あとはコントローラからこのように呼び出してあげると、モバイルか否かの結果が$isMobileに入ります:

$isMobile = $this->loadComponent('MobileDetectWrapper')->isMobile();