Locationヘッダーの代わりにinclude

PHPの話ですが。

例えば、こんな感じのソースがあったとする。
[php num=1] // test.php header('Location: http://www.example.com/home.php?sort=normal' ); [/php] [php num=1] // home.php $sort=$_GET['sort']; // 以下、$sortを使った処理 [/php]

リダイレクトを使った処理なのだけども、でもうまく動かないブラウザとかあるのよね。
vodafoneはリダイレクト出来ない?

ってことで、include を使った処理を考えてみる。

[php num=1] // test.php $GET['sort'] = 'normal'; include('home.php'); [/php] [php num=1] // home.php $sort=$GET['sort']; // 以下、$sortを使った処理 [/php]

ただ$_GETを上書きするのもあんまりだなぁ、ってことで、

[php num=1] class SdRequest { function & getInstance(){ static $singleton; if ($singleton == null) { $singleton = new SdRrequest(); } return $singleton; } function SdRequest(){ $this->parameters = $_GET; } function get($key){ return $this->parameters[$key]; } function overwrite($key,$value){ $this->parameters[$key] = $value; } } [/php]

みたいな$_GETのラッパークラスを利用する。
(どのみちこの手のクラスは必要になることが多いと思う)

で、

[php num=1] // test.php $param= & SdRequest::getInstance(); $param->overwrite('sort','normal'); include('home.php'); [/php] [php num=1] // home.php $param= & SdRequest::getInstance(); $sort= $param->get('sort'); // 以下、$sortを使った処理 [/php]

って感じにすれば、ちょっとはすっきりしたソースになる気がする。