参考:北青山通信 - from aoyama − CakePHPでPEARを使う
1.pearライブラリをapp/vendorsへコピー
app/vendors へ PEAR.phpをコピー。
app/vendors/Net/UserAgent へ PEAR::Net_UserAgent_Mobileをコピー
(app/vendors/Net/UserAgent/Mobile.php
app/vendors/Net/UserAgent/Mobile/色々という、配置
)
2.include_pathにapp/vendorsのパスを追加
参考:北青山通信 - from aoyama − CakePHPでPEARを使うでは、
[app/vendors/pear_init.php]
<?php ini_set('include_path', ini_get('include_path'). PATH_SEPARATOR . dirname(__FILE__)); ?>
とあるがうまくいかない。
参考:やっとこさ メモ: XAMPPのphp.ini内「include_path」についてを参考に
[app/vendors/pear_init.php]
<?php //include_pathにapp/vendorsのパスを追加する ini_set('include_path', dirname(__FILE__). PATH_SEPARATOR .ini_get('include_path') ); ?>
とするとうまくいく。
使い方は、
App::import(cakephp1.2で推奨)で読み込むが、
<?php App::import('Vendor', 'Net/UserAgent/Mobile'); ?>
だとエラーがでる。(「Mobile」のフォルダと区別できないため?)
<?php App::import('Vendor', 'Mobile', array('file' => 'Net'.DS.'UserAgent'.DS.'Mobile.php')); ?>
と書いてやるとうまくいく。
[app/controller/pages_controller.php]
<?php App::import('Vendor', 'pear_init'); //先に読み込まないとパスが通らないよ! App::import('Vendor', 'Mobile', array('file' => 'Net'.DS.'UserAgent'.DS.'Mobile.php')); class PagesController extends AppController { var $name = 'Pages'; function index() { $userAgent = new Net_UserAgent_Mobile; $userAgent->factory(); if($userAgent->isDoCoMo()){ //isDoCoMoの処理 } else { //isDoCoMo以外の処理 } } } ?>