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;
}
}
}


コメント