2016年1月8日金曜日

 

タイムゾーンが未設定だとCodeIgniterのカレンダークラスのWarning

CodeIgniterの便利なデフォルトのカレンダークラス、PHP5.1以降、TimeZoneを設定してないとWarningが表示されてしまう。
なので『php.ini』ファイルなどで設定する。

    date.timezone = Asia/Tokyo;
またはPHPファイル内で設定。

    date_default_timezone_set('Asia/Tokyo');
コントローラなど先頭で記述するのが良いでしょう。

ラベル: ,


 

CodeIgniterでコントローラ名:Index.phpにメソッド名:index()は『Undefined property: Index::$load』

CodeIgniterでのエラーというかPHPの特性。
クラス名と同じメソッドはコンストラクタ扱い。

class Index extends CI_Controller {
    public function index()
    {
        $this->load->view('index');
    }
}
これはエラー。親コンストラクタが呼ばれないので。エラーはこんな感じ。
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Index::$load
Filename: controllers/Index.php
正しくは

class Index extends CI_Controller {
    public function __construct()
    {
        parent::__construct();
        // 
    }

    public function index()
    {
        $this->load->view('index');
    }
}
独自にコンストラクタを定義する場合も『parent::__construct()』以下に記述すれば良い。
これは大丈夫。

class Home extends CI_Controller {
    public function index()
    {
        $this->load->view('index');
    }
}
逆にこれはダメ。

class Home extends CI_Controller {
    public function home()
    {
        $this->load->view('index');
    }
}
ビュー名は関係ない。

参考

コントローラ | 基礎編 CodeIgniter Guide 徹底ガイド!

ラベル: ,


2012年1月27日金曜日

 

携帯、iOS端末、スマートフォン、モバイル端末の判別ライブラリ - MobileESP

サイト

MobileESP - The MobileESP Project

PHP、JavaScript、Java、ASP.NETそれぞれのライブラリが有ります。

PHP用は以下からダウンロード。

ダウンロード

mobileesp MobileESP - Google Project Hosting

使い方

て程もなく、アップロードして呼び出すだけ。

/* MbileESPの使い方 */

require "mdetect.php"; $m = new uagent_info();

以下メソッドです。返り値はすべて「TRUE/FALSE」です。

/* メソッド一覧 */
Get_Uagent(PHP以外GetUserAgent):$_SERVER['HTTP_USER_AGENT']をstrtolower()に通した値
Get_HttpAccept(PHP以外GetHttpAccept):$_SERVER['HTTP_ACCEPT']をstrtolower()に通した値
DetectIphone:iPhone判別(iPod TouchかiPad)
DetectIpod:iPod Touch判別
DetectIpad:iPad判別
DetectIphoneOrIpod:iPhoneかiPod Touch
DetectIos:iOS機器判別(iPhone、iPod Touch、iPad)
DetectAndroid:Android OS機器判別(Android携帯、タブレット、HTC Flyer、Google TV)
DetectAndroidPhone:Android携帯判別(Androidモバイル機器のみタブレットは無視)
DetectAndroidTablet:Androidタブレット判別(Androidモバイル機器以外)
DetectGoogleTV:GoogleTV判別
DetectAndroidWebKit:Android携帯用のWebKitブラウザか判別
DetectWebkit:0WebKitエンジン製ブラウザか判別
DetectS60OssBrowser:Nokia S60ブラウザか判別
DetectSymbianOS:Symbian OS機器判別
DetectWindowsPhone7:Windows Phone 7機器判別
DetectWindowsMobile:Windows Mobile機器判別(Windows Phone 7以外の7:Windows Mobile 6以前)
DetectBlackBerry:BlackBerry用ブラウザ判別
DetectBlackBerryTablet:BlackBerryタブレット用ブラウザ判別
DetectBlackBerryWebKit:BlackBerryのWebKitブラウザか判別(BlackBerry OS 6)
DetectBlackBerryTouch:BlackBerryのブラウザか判別(Storm、Torch、Bold Touch、Playbook)
DetectBlackBerryHigh:BlackBerry OS 5のブラウザか機器(Storm、Bold、Curve2等BlackBerry OS 6~7のブラウザ以外)
DetectBlackBerryLow:BlackBerry機器の古いブラウザか判別(Pearl, 8800, Curve1)
DetectPalmOS:PalmOS機器のブラウザか判別
DetectPalmWebOS:PalmのWebOS機器のブラウザか判別
DetectWebOSTablet:HPのWebOSタブレット機器のブラウザか判別
DetectGarminNuvifone:GarminのNuvifonのブラウザか判別
DetectSmartphone:スマートフォンか判別(次のメソッドを呼ぶ:isIphone()、isAndroidPhone()、isTierIphone()、DetectS60OssBrowser()、DetectSymbianOS()、DetectWindowsMobile()、DetectWindowsPhone7()、DetectBlackBerry()、DetectPalmWebOS()、DetectPalmOS()、DetectGarminNuvifone())
DetectBrewDevice:Brew機器か判別
DetectDangerHiptop:Danger Hiptopか判別
DetectOperaMobile:Operaブラウザか判別(Opera Mobile、Opera mini)
DetectOperaAndroidPhone:Android携帯のOpera Mobileブラウザか判別
DetectOperaAndroidTablet:AndroidタブレットのOpera Mobileブラウザか判別
DetectWapWml:0WAPかWMLに対応した機器か判別
DetectKindle:eInk対応のAmazon Kindle機器
DetectMobileQuick:モバイル機器の簡易判別(iPad等モダンデバイスを除くスマートフォン)
DetectSonyPlaystation:Playstationか判別
DetectNintendo:Nindendoのゲーム機か判別
DetectXbox:Xboxか判別
DetectGameConsole:ゲーム機か判別(次のメソッドを呼ぶ:DetectSonyPlaystation()、DetectNintendo()、Xbox())
DetectMidpCapable:Java MIDP対応機器か判別
DetectMaemoTablet:NokiaのMaemo機器か判別
DetectArchos:0Archos機器かどうか
DetectSonyMylo:Myloか判別
DetectMobileLong:携帯、スマートフォン、タブレット、ゲーム機等のモバイル機器か判別(次のメソッドを呼ぶ:DetectMobileQuick()、DetectGameConsole()、DetectSonyMylo() 次の機器かユーザエージェントから判別:"up.link"、"sonyericsson"、"ericsson"、"docomo"、"kddi"、"vodafone")
DetectGameConsole:
DetectTierTablet:iPad、Android、BB Playbook、WebOS等のHTML 5対応の大画面タブレットを判別(次のメソッドを呼ぶ:DetectIpad()、DetectAndroidTablet()、DetectBlackBerryTablet()、DetectWebOSTablet())
DetectTierIphone:iPhone、iPod Touch、Android、Windows Phone 7、WebOS等のiPhoneコンテンツ対応機器を判別
DetectTierRichCss:iPhone向けCSS有効な機器を判別(Javascriptは考慮しない、DetectTierIphone()を除く)
DetectTierOtherPhones:携帯を判別(iPhoneとDetectTierRichCss()を除く)

PHPだけ「GetUserAgent()Get_Uagent」や「GetHttpAcceptGet_HttpAccept」でなぜか「strtolower()」を使って小文字にしてたり良くわかりませんが、Softbankはシミュレータでアクセスしたところ以下のメソッドが検知してくれるようです。

/* シミュレータからSoftbankでアクセス結果 */

DetectMidpCapable:1
DetectMobileQuick:1
DetectMobileLong:1
DetectTierOtherPhones:1

IDなど取得するメソッドはないのでセッション管理やログインなどには使えませんが、レスポンシブ Webデザインに使うには良いかもしれません。

感想

いろんなプラットフォームがあるんだなぁと思いました。
その全てのアクセスを想定しなくてはいけないのはさらにWeb制作が大変だと思います。

おまけ


ラベル: ,


This page is powered by Blogger. Isn't yours?

登録 投稿 [Atom]

Google