phpの条件文は関数のコールバックを使えますよ・・・、CASE文も例外では御座いません(´・ω・`)
だけど、それを知らずにIF文まみれのクソソースをよこされた暁には・・・ね。
以下ソースコードは、公開しても大丈夫なレベルに色々端折りました(´・ω・`)
<?php class Campaign extends CI_Controller { public function __construct() { parent::__construct(); } public function _remap($mode="index",$param=array()) { switch ($mode) { // キャンペーンNoがリクエストされた場合 case is_int($mode): // キャンペーンNoのテンプレートがない→404 // このエラーコード出力は通常モデル化しています if (!file_exists("view/Campaign/no/template_".$mode.".html")) { $data = array( "HTTP_Code" => 404, "ErrDoc" => "ご指定のページはありません。" ); $this->load->view("view/Common/error.html",$data); } // 通常処理 else { // No.18 : ツイッターのアクセス数降順にユーザリストを並べ替える // 上でSWITCH文かけているから、もっと上手な分岐があるはず(´・ω・`) if ($mode == "18") { $handle = @fopen("controller/Campaign/18/twi_counts","r"); while ($dump = fgetcsv( $handle )) $twi_data_tmp[] = $dump; @fclose($handle); foreach ($twi_data_tmp as $key=>$val) { $sort_point[$key] = $val[5]; } $data["twi_data"] = array_multisort($sort_point ,SORT_DESC,$twi_data_tmp); unset($twi_data_tmp,$sort_point); // その他処理 } // 共通処理として、$modeに沿ったビューを展開 $this->load->view("view/Campaign/no/template_".$mode.".html",$data); // 以下キャンペーンNo毎に独自処理を書いていく } // 以下No以外のキャンペーンに独自処理を書いていく break; } // index default: if ($handle = opendir("view/Campaign/no/")) { while (false !== ($file = readdir($handle))) { if ($file !== "." && $file !== "..") { // テンプレートからNo部分のみ切り抜いて配列化 $templates[] = str_replace(array("template_",".html"),array(),$file); } } } $data["no_list"] = $templates; $this->load->view("view/Campaign/index.html",$data); break; } } }
コメント