[Codeigniter-users] コアライブラリのオーバーライド

Back to archive index

木下 敏夫 kino****@tktoo*****
2007年 11月 30日 (金) 21:27:05 JST


木下です。

私の返信の仕方が不味くてMLへは流れていないようでした。

丁度私も同じ箇所を見つけて投稿しようと思っていたところですが
セキュリティアップデート等のことを考えるとコアの変更はできるだけ避けたいところです。
	if (file_exists(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT))
	{
		require(BASEPATH.'libraries/'.$class.EXT);	
		require(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT);
		$is_subclass = TRUE;	
	}
	else
	{
		if (file_exists(APPPATH.'libraries/'.$class.EXT))
		{
			require(APPPATH.'libraries/'.$class.EXT);	
			$is_subclass = FALSE;
		}
		else
		{
			require(BASEPATH.'libraries/'.$class.EXT);
			$is_subclass = FALSE;
		}
	}
を
if (file_exists(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT))
{
	if (file_exists(APPPATH.'libraries/'.$class.EXT))
	{
		require(APPPATH.'libraries/'.$class.EXT);
	}
	else
	{
		if (file_exists(PATCH.'libraries/'.$class.EXT))
		{
			require(PATCH.'libraries/'.$class.EXT);
		}
		else
		{
			require(BASEPATH.'libraries/'.$class.EXT);
		}
	}
	require(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT);
	$is_subclass = TRUE;
}
else
{
	if (file_exists(APPPATH.'libraries/'.$class.EXT))
	{
		require(APPPATH.'libraries/'.$class.EXT);
		$is_subclass = FALSE;
	}
	else
	{
		if (file_exists(PATCH.'libraries/'.$class.EXT))
		{
			require(PATCH.'libraries/'.$class.EXT);
			$is_subclass = FALSE;
		}
		else
		{
			require(BASEPATH.'libraries/'.$class.EXT);
			$is_subclass = FALSE;
		}
	}
}

とでもして
それ以外の緊急のセキュリティパッチや各国での言語依存対応等の対応をPATCH ディレクトリ内に配置。
ユーザーがオーバーライドするのは APPPATH で
但し、ユーザーに対してはセキュリティ対策等が反映されやすいように出来るだけ
MY_ 等のサブクラスとして作成することを促がす。

というのはいかがでしょ。

セキュリティ対策やバージョンアップ用の一時適応をPATCHディレクトリ行えば
問題が発生した場合はそのファイルを削除するだけで良いので、対応も迅速に行えるようになるはず。


-- 
木下敏夫
http://www.tktools.jp/
mailto:kino****@tktoo*****




Codeigniter-users メーリングリストの案内
Back to archive index