プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
FuelPHP1.7、Coreクラスを拡張する
結論から書けば

1.拡張したい「fuel\core\」配下のファイルと同名のファイルを「fuel\app\」配下に置く
 例:fuel\core\classes\response.php → fuel\app\classes\response.php

2.「fuel\app\」配下の中身を好きに書く。Coreの同クラスを継承しておくと便利
 例:class Response extends Fuel\Core\Response { 中身の処理 }

3.「fuel\app\bootstrap.php」の「Autoloader::add_classes」に追加
 例:
  Autoloader::add_classes(array(
   'Response' => APPPATH.'classes/response.php',
  ));

です。

諸般の事情によりCoreクラスのresponse.phpに変更を加えたくてですね。
でもCoreクラス内のファイルを直接変更するのはなぁ……というのが調べたきっかけです。

ほんであれやこれやと調べたところ、コピーして上書きすれば良いよ、と。
そんな優しいことが公式に書いてあったのでやってみました。

それでは早速。

まずは元ファイルをコピー(--)b

fuel\core\classes\response.php



fuel\app\classes\response.php

としてコピーしました。

次に中身を書き換え。
元のCoreクラスを継承すれば、変更したいところだけを書き換えられますね。

今回はこんな感じにしてみましたφ(--)
<?php

class Response extends Fuel\Core\Response
{

    public static function forge($body = null, $status = 200, array $headers = array())
    {
        $body = mb_convert_encoding($body, "SJIS-win", "UTF-8");

        return parent::forge($body, $status, $headers);
    }

}
※出力内容をUTF-8からShift_JISに変換しています。

最後に、変更内容をFuelPHPさんに教えてあげました。

fuel\app\bootstrap.php

の中に

Autoloader::add_classes(array(
    // Add classes you want to override here
    // Example: 'View' => APPPATH.'classes/view.php',
));

という部分があるので

Autoloader::add_classes(array(
    // Add classes you want to override here
    // Example: 'View' => APPPATH.'classes/view.php',
    'Response' => APPPATH.'classes/response.php',
));

に変えてあげればOKです。
これで無事にCoreクラスの拡張が完了しました。

お疲れ様でっす\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:FuelPHP  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事