このエントリーをはてなブックマークに追加

更新日: 2016年2月25日

実行時間: 0.0075

共通関数

 「system/core/Common.php」は、フロントコントローラ(index.php)から処理を引き継いだ「CodeIgniter.php」 によって、一番最初にインクルードされます。

 「Common.php」は、関数定義ファイルで、定義されている関数をCodeIgniterフレームワーク内で いつでも実行することが可能です。

 「Common.php」で定義されている関数の中には、CodeIgniterのシステムが利用するものがあり、 それらは、ユーザが開発するプログラムからは利用すべきではありません。
 この章では、ユーザがコントローラクラスやモデルクラスで利用できるいくつかの関数について説明しています。

is_php($version = '5.0.0')

 利用しているシステムのPHPバージョンが、引数で指定したバージョン以上であるか確認します。
 指定したバージョン未満の場合は「FALSE」を、指定したバージョン以上の場合は 「TRUE」を返します。

    echo PHP_VERSION;
    // 5.1.6
    is_php(); // TRUE
    is_php('5.3.3'); // FALSE

is_really_writable($file)

 指定したファイルが書き込み可能かどうか確認します。書き込み可能であればTRUE、 書き込み不可であればFALSEを返します。
 引数にはドキュメントルートからの相対パス、または、絶対パスでファイルを指定します。

    if (is_really_writable('../tmp/my_file.txt')) {
        // 書き込み可能
    }

show_error($message, $status_code = 500, $heading = 'An Error Was Encountered')

 エラーページを出力します。
 第一引数にエラーページに表示するエラーメッセージを指定します。
 第二引数にはHTTPエラーコードを数値で指定します。
 第三引数でエラーページに表示するエラーのタイトルメッセージを指定することもできます。デフォルトでは 「An Error Was Encountered」となります。

 エラーページのテンプレートは「application/errors/error_general.php」となります。 テンプレートを変更したい場合や、動的にエラーページを指定する場合は「CI_Exception」クラスの 「show_error()」メソッドを利用してください。

    $message = 'エラーです。';
    show_error($message, 500);

show_404($page = '', $log_error = TRUE)

 HTTPエラーコード「404」(Page Not Found.)のエラーページを表示します。
 第一引数は、第二引数のログ出力の指定でTRUEを指定した場合に、ログメッセージに 利用うされるページ名を指定します。
 第二引数にFALSEを指定した場合は、ログ出力はされません。

 「404 Page Not Found」エラーページのテンプレートは「application/errors/error_404.php」です。

    show_404('my_page');
    • ログ出力
    404 Page Not Found --> my_page

log_message($level = 'error', $message)

 ログメッセージをログファイルに出力します。
 第一引数にログレベルを「error」「debug」 または、「info」で指定します。
 第二引数は、ログファイルに出力するメッセージを指定します。

 設定ファイル「application/config/config.php」 の「$config['log_threshold']」の 設定によって、指定したレベルのログが出力されるか判定されます。

 ログファイルは、「application/config/config.php」の 「$config['log_path']で設定することができます。 ログファイルはWebサーバアプリケーションからの書き込み権限が必要です。

    log_message('error', 'Some Error Message.');

set_status_header($code = 200, $text = '')

 出力するHTTPステータスヘッダのステータスコードとステータスメッセージをセットします。

 ステータスメッセージはデフォルトで定義されているので、通常はステータスコードのみ指定します。
 もし、ステータスメッセージを上書きしたい場合、または、独自のステータスコードをセットする場合は、 第二引数でステータスメッセージを指定することができます。

    set_status_header(400);

remove_invisible_characters($str, $url_encoded = TRUE)

 第一引数で指定された文字列からブラウザで表示できない文字列を削除します。 指定した文字列がURLエンコードされている場合は、第二引数にTRUEを指定します。 URLエンコードされていない文字列を指定した場合は、FALSEを指定します。

    • URLエンコードされた文字列
    $str = urlencode($str);
    $str = remove_invisible_characters($str);
    • URLエンコードされていない文字列
    $str = urldecode($str);
    $str = remove_invisible_characters($str, FALSE);

 グローバル変数「$_GET」「$_POST」「$_COOKIE」の値は、CodeIgniterの 「CI_Input」クラスによって自動で 「remove_invisible_characters()」でサニタイズされています。
 「CI_Input」クラスの「get()」「post()」「cookie()」メソッドで取得できる値もサニタイズされてから返されます。

注:
 「CI_Input」クラスのサニタイズ処理のバグ

 グローバル変数「$_GET」「$_POST」「$_COOKIE」の値はPHPの仕様によって予めURLデコードされたものが セットされています。しかし、CodeIgniterの「CI_Input」クラスのサニタイズ処理にはバグがあり、 これらグローバル変数の値を「remove_invisible_characters()」の第二引数を 「TRUE」でサニタイズしているため、 値に「%25」などの文字列が含まれている場合、正しい値が取得できません。
 詳しくは、本家Bug Trackerを参照してください。


html_escape($var)

 文字列からHTML特殊文字を特殊文字コードに変換します。
 引数には、文字列の他、文字列からなる配列、または、多次元配列も指定することができます。
 基本的には、PHPの「htmlspecialchars()」関数のラッパーですが、
配列を指定した場合は、再帰的に配列内のデータ全てに「htmlspecialchars()」関数が適用されていきます。

    $strings = array(
        'I like coffe & cookie.',
        'HTML Tag is <strong>escaped</strong>',
    );
    $string = html_escape($strings);
    print_r($strings);
    /*
    Array(
        [0] => I like coffe &amp; cookie.
        [1] => HTML Tag is &lt;strong&gt;escaped&lt;/strong&gt;
    )
    */