CodeIgniter から FuelPHP への移行手順 (不完全)
これは、CodeIgniter 2.x で作成したアプリを FuelPHP へ移行する方法についてのメモです。移行の手間を減らすことを目的にしているため、この方法での移行は、きれいなコードとは言えません。また、このメモは完全ではありません。
関数と定数の移行
config.php に CodeIgniter にのみ存在する関数と定数で、アプリケーションで必要なもののみを追加&作成する。
例えば、
// CodeIgniter constants define('FILE_READ_MODE', 0644); define('FILE_WRITE_MODE', 0666); define('DIR_READ_MODE', 0755); define('DIR_WRITE_MODE', 0777); define('FOPEN_READ', 'rb'); define('FOPEN_READ_WRITE', 'r+b'); define('FOPEN_WRITE_CREATE_DESTRUCTIVE', 'wb'); // truncates existing file data, use with care define('FOPEN_READ_WRITE_CREATE_DESTRUCTIVE', 'w+b'); // truncates existing file data, use with care define('FOPEN_WRITE_CREATE', 'ab'); define('FOPEN_READ_WRITE_CREATE', 'a+b'); define('FOPEN_WRITE_CREATE_STRICT', 'xb'); define('FOPEN_READ_WRITE_CREATE_STRICT', 'x+b'); // CodeIgniter functions function get_microtime($e = 7) { list($u, $s) = explode(' ', microtime()); return bcadd($u, $s, $e); } function validation_errors() { $val = Validation::instance(); return $val->show_errors(); } function set_value($field, $default = '') { $val = Validation::instance(); return e($val->input($field, $default)); }
ファイルのコピー
MVC ファイルをコピーする。
Model
モデル名の変更
Model 名に Model_ を付け、拡張する親クラス名から CI_ を削除する。
Email クラスの変更
$this->load->library('email'); $config[...] = ...; $this->email->initialize($config);
↓
Package::load('email'); $config[...] = ...; $this->email = Email::forge('default', $config);
$this->email->message() → $this->email->body()
メールの送信処理 $this->email->send() を try〜catch で処理する。
必要に応じて $this->email->clear_recipients() を追加する。
データベース
@TODO
Controller
コントローラ名の変更
Controller 名に Controller_ を付け、拡張する親クラス名から CI_ を削除する。
メソッド名の変更
アクションメソッド名に action_ を付ける。
ヘルパーをロードするコードの削除
$this->load->helper() を削除する。
ライブラリをロードするコードの変更
$this->load->library('form_validation');
↓
$this->form_validation = Validation::forge();
before() メソッドの追加
コンストラクタのコードを before() に移動する。
$this->input を使っている場合は、以下を追加する。
$this->input = new Input();
バリデーションの変更
set_rules() を add_field() に変更する。
バリデーションメソッドでの個別のフィールドの検証のメソッド名を変更する。
$this->form_validation->valid_email($val)
↓
$this->form_validation->_validation_valid_email($val)
バリデーションルールを変更する。
numeric → valid_string[numeric,dots]
$this->input->post() の値を使って処理している場合、FuelPHP では検証済みの値にならないので、$val->validated() に変更する。
モデルをロードするコードの変更
$this->load->model('Mail_model');
↓
$this->Mail_model = new Model_Mail();
ビューをロードするコードの変更
$this->load->view() → return View::forge()
ビューにセットする変数
必要に応じて HTML エスケープ処理を外す。