記事目次
クリエイターブログ/システム開発
システム開発
【CodeIgniter】form_validationの分割
経緯
バリデーションを行った際にメモリが多く利用されることがあり、調査を行った結果、画面の入力項目が多い画面のバリデーションルールの配列定義が大きかったことが原因であることがわかりました。
その対策のため、form_validationファイルを分割する方法を紹介します。
構成管理ツールのコンフリクト対策にも有効かもしれません。
CodeIgniterのバージョンは 3.1.6 をもとにしています。
form_validationの読込先の変更
config/form_validation.phpを下記のように変更します。
config/form_validation.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$config = call_user_func(function () {
$CI =& get_instance();
$class = $CI->router->class;
$config = NULL;
$directory = APPPATH.'form_validation/'.$CI->router->directory;
if (file_exists($directory.strtolower($class).'.php'))
{
include($directory.strtolower($class).'.php');
}
elseif (file_exists($directory.ucfirst(strtolower($class)).'.php'))
{
include($directory.ucfirst(strtolower($class)).'.php');
}
return $config;
});
form_validationの設定
実際のform_validatinは下記のように、application/form_validation内に、コントローラーと同じ階層構造で配置してくことになります。
コントローラーごとに読み込むファイルが変わり、読み込まれるルールも減ったため、メモリの使用量を減らすことができました。
application/
|-controllers/
| |-api/
| | `-Users.php
| `-Customers.php
`-form_validation/
|-api/
| `-Users.php
`-Customers.php
まとめ
form_validationの分割は比較的大きなシステムとなった場合に有効な方法だと思いますので、ぜひ参考にしてみてください。