PC/携帯ページと端末による振り分けを必要としたことはないでしょうか?
FuelPHPにはAgentクラスがあり、このクラスでは Browser Capabilities Project 制作の browscap.ini を使うことでユーザーエージェントから各種情報が簡単に判明します。ブラウザ名やプラットフォームはそれぞれ Agent::browser() で (IE・Chromeなど)、 Agent::platform() で (Win7など)と手軽に取得ができるのです。
これらの情報を含めた Agent::properties() を使うと得られたデータの一覧が表示されます。
モバイル端末から実行
この便利なAgentクラスには携帯端末からのアクセスかどうかを判定する Agent::is_mobiledevice() というメソッドが用意されておりますが、スマートフォンかどうかの判定はできません。つまりスマートフォンからのアクセスが Agent::is_mobiledevice() で true となってしまいます。
今の時代、所謂携帯向けだけではなくスマートフォンからのアクセスは専用のページを用意することも多いでしょう。そこでスマートフォンと判定できるようAgentクラスを拡張された方がおられます。
スマートフォンに対応したAgent::is_smartphone()メソッド
FuelPHPのAgentクラスと拡張 - BTT's blog
上記の BTT's blog さんは、Agentクラスを拡張して、Agent::is_smartphone() メソッドによりスマートフォンかどうかの判定が可能となっております。これによりスマートフォンからのアクセスかどうかが判明するため、あとはそれ用のViewを用意すれば良いだけです。
なお既存の Agent::is_mobiledevice() に変更はありません。ですから依然としてスマートフォンをモバイル端末と判定するため、以下のように先にAgent::is_smartphone() メソッドでスマートフォンかどうかを判定し、次に Agent::is_mobiledevice()を使うことで残りのモバイル環境を携帯端末と判断すればよいかと。
if (Agent::is_smartphone()) { // スマートフォン } elseif (Agent::is_mobiledevice()) { // 携帯 } else { // PC }
Firefoxのプラグイン「FireMobileSimulator」を使って試してみた
browscap.ini の情報不足もあってか新しい端末やマイナーな端末に関しては判定がPCとでることがありましたが、有名どころのスマートフォンに関しては正確に判定できております。
いや〜便利ですね〜。以前にPEARのライブラリを使って端末情報を判定していたのですが、それだけだとスマートフォンかどうかの判定ができないため独自のクラスを使っておりました。FuelPHPだと簡単に実装できてしまいました。