fuelphpで必ずやってる設定などまとめ
完全に自分仕様になっているが毎回同じ設定を過去のプロジェクトのをみながら都度やっていて時間も無駄なのでまとめておく
fulephpで準備されている機能の準備
日本語を使う準備
fuel/app/config/config.phpを編集
//81行目くらい 'language' => 'ja', // Default language 'language_fallback' => 'en', // Fallback language when file isn't available for default language 'locale' => 'ja_JP.UTF-8', // PHP set_locale() setting, null to not set //88行目くらい 'encoding' => 'UTF-8',
validation回りの準備
validationで使うメッセージ設定
fuel/app/lang/ja/validation.phpを作成
FuelPHPのエラーメッセージ日本語化 - BTT's blog
内容はいつもこちらのサイトのものをそのままコピってます
validationファイルを用意
あとでutilフォルダなるフォルダを準備しますが、そこにオリジナルのvalidationまわりのメソッドを実装するvalidations.phpを準備します
fuel/app/classes/util/validations.php
class Util_Validations { public static function _validation_alphanum($val) { return 1 <= preg_match('/^[a-zA-Z0-9]+$/',$val); } public static function _validation_numeric($val) { return is_numeric($val); } }
で使う場合はこんな感じで使ってます
$val = Validation::forge(); $val->add_callable('Util_Validations');
ログ設定
fuel/app/config/config.phpを編集
108行目くらい 'log_threshold' => Fuel::L_DEBUG,
※不要なログもけっこう出て見づらくなってしまうのですが、落ち着くまでは基本的に見ておきたい性格なのでこの設定にしています
logsフォルダに書き込み権限付与
chmod 0777 -R fuel/app/logs
email設定
fuel/app/config/config.phpを編集
260行目くらい コメントアウトされてるのを外す 'always_load' => array ); 273行目くらい 'packages' => array( 'email', ),
emailはほぼ使うので必ず設定してます
自分が勝手に毎回している設定
これ以降はさらに自分仕様のメモです
アプリ内定義系ファイルの作成
定数や定義系の配列はここで管理します
fuel/app/config/define.php
※例
return array( "db" => array( "users" => array( 1 => "男性", 2 => "女性", ) ), );
便利関数を準備
mkdir fuel/app/classes/util vi fuel/app/classes/util/validations.php <?php class Util_Validations { }
こんなイメージ
DB共通処理
fuel/app/classes/model/common.php
<?php class Model_Common extends Model { public static function getOne($query,$params) { try { $result = DB::query($query)->parameters($params)->execute()->as_array(); Log::debug('sqlデバッグ::'.DB::last_query()); return empty($result) ? array() : $result[0]; } catch (Exception $e) { Log::error('sqlエラー::'.$e->getMessage()); return false; } } public static function getAll($query,$params) { try { $result = DB::query($query)->parameters($params)->execute()->as_array(); Log::debug('sqlデバッグ::'.DB::last_query()); return empty($result) ? array() : $result; } catch (Exception $e) { Log::error('sqlエラー::'.$e->getMessage()); return false; } } public static function getAllNum(&$all_num,$query,$params) { try { $result = DB::query($query)->parameters($params)->execute()->as_array(); Log::debug('sqlデバッグ::'.DB::last_query()); $result_num = DB::query("SELECT FOUND_ROWS() AS ct")->execute() ->as_array(); Log::debug('sqlデバッグ::'.DB::last_query()); $all_num = $result_num[0]['ct']; return empty($result) ? array() : $result; } catch (Exception $e) { Log::error('sqlエラー::'.$e->getMessage()); return false; } } public static function getAllNumWithCount(&$all_num,$query,$params) { try { $result = DB::query($query)->parameters($params)->execute()->as_array(); Log::debug('sqlデバッグ::'.DB::last_query()); $result_num = DB::query("SELECT FOUND_ROWS() AS ct")->execute() ->as_array(); Log::debug('sqlデバッグ::'.DB::last_query()); $all_num = $result_num[0]['ct']; return empty($result) ? array() : array('list'=>$reuslt,'count'=>'all_num'); } catch (Exception $e) { Log::error('sqlエラー::'.$e->getMessage()); return false; } } public static function execute_insert($table,$data) { try { $r =DB::insert($table)->columns(array_keys($data))->values(array_values($data))->execute(); Log::debug('sqlデバッグ::'.DB::last_query()); return $r[0]; } catch (Exception $e) { Log::error('sqlエラー::'.$e->getMessage()); return false; } } public static function execute_update($table,$id,$data) { try { $result = DB::update($table)->set($data)->where('id',$id)->execute(); Log::debug('sqlデバッグ::'.DB::last_query()); return $result; } catch (Exception $e) { Log::error('sqlエラー::'.$e->getMessage()); return false; } } public static function execute_update_where($table,$where,$data) { try { $result = DB::update($table)->set($data)->where($where)->execute(); Log::debug('sqlデバッグ::'.DB::last_query()); return $result; } catch (Exception $e) { Log::error('sqlエラー::'.$e->getMessage()); return false; } } }
僕はormは使ってないので最低限のsqlが実行できるメソッドを実装してます。
あとは、上でも書きましたが落ち着くまで基本ログは残したいので実行した全てのsqlを残すように実装してあります
アプリでの共通処理 ~ Controller
fuel/app/classes/controller/app.php
class ValidationException extends Exception {} class Controller_App extends Controller { public function before() { //定義ファイル読み込み Config::load('define',true); //アクセスログ出力 Log::debug(sprintf( "ACCESS\t%s\t%s\t%s\t%s\t%s\t%s" ,Input::server("REMOTE_ADDR") ,Input::server("HTTP_USER_AGENT") ,urldecode(Input::server("REQUEST_URI")) ,Input::server("HTTP_REFERER") ,json_encode(Input::get()) ,json_encode(Input::post()) )); } }
定義系ファイルの読込みやサイト共通で行いたい処理(ログイン認証回りとか)コントローラをあらかじめ準備しておきます。これもコントローラが複数になる場合は自分は必ず用意してます。
エラー処理の実装
エラー処理について、こちらの記事の設定を行います
さいごに
完全に自分仕様の部分で他人の参考にならないとは思いますが、自分的にはこれくらいかな、、、
さくらのレンタルサーバーでfuelphpをセットアップしたあとにこれらの設定を行います
※参考
さくらのレンタルサーバでのfuelphpセットアップ手順 - とりあえずphpとか
※追記項目
email設定(2015/2/15)
以上です