Net_UserAgent_MobileをcakePHP1.2RC2で使う

携帯キャリアの判定に, PearのNet_UserAgent_Mobileを使う方法。まず、下記からNet_UserAgent_MobileとPearをダウンロード
http://pear.php.net/package/Net_UserAgent_Mobile/
http://pear.php.net/package/PEAR


UserAgentMobileのファイルを展開すると、mobile.phpとMobileフォルダが出来るので、下記のディレクトリのように設置。PEARも展開するといくつかファイルがあるので、PEAR.phpを下記のように設置。

app
 |-vendors
      |-PEAR.php
      |-Net
         |-UserAgent
              |-Mobile(ディレクトリ)
              |-Mobile.php


app/vendors/pear_ini.phpファイルを作成

<?php
    ini_set('include_path', dirname(__FILE__) . PATH_SEPARATOR . get_include_path());
?>


例えば、mobileというコントローラで呼ぶ場合
app/controllers/mobile_controller.phpを下記のように作成

<?php

App::import('Vendor', 'pear_ini');
App::import('Vendor', 'Net/UserAgent/Mobile', array('file' => 'Net' . DS . 'UserAgent' . DS . 'mobile.php'));

class MobileController extends AppController {
	var $name = 'Mobile';
	var $layout = '';

	function index( ) {

		$agent = &Net_UserAgent_Mobile::factory();

		switch( true )
		{
		  case ($agent->isDoCoMo()):   // DoCoMoかどうか
		    //Docomo用の処理
		    break;

		  case ($agent->isSoftBank()): // softbankかどうか
		    //Softbank用の処理
		    break;

		  case ($agent->isEZweb()):    // ezwebかどうか
		    //Au用の処理
		    break;

		  default:
		    //PC用の処理
		    break;
		}
	}

}

?>


上記の例だと、エージェントを判定して、それぞれ処理を実行する場合の基本パターン。

cakephp1.2RC2だと、vendor('hoge');というようなインポート関数が非推奨になり、ワーニングが出るので、App::importを使う。