最近色んなフレームワークが使われていて、結構開発を行う際に楽に行えたりしてきてると思います。けれどもその反面、一度覚えちゃえばいいのかもしれないけれども、ちょちょっとテストしたり、小規模なシステムを作るときとかに、わざわざ大きなフレームワークを入れたりするのはめんどくさい。ましてや、その動作を覚えたり、内部的に何やってんのかわからなくて詰まるのは本望じゃない。そういうときの為に簡単にhttpリクエストを処理する方法を、超簡単に書く。
今回やるのは、http://example.com/example.php?message=hogeみたいなhttpリクエストを得た場合に、受け取ったhogeを返すプログラム。プログラムと呼べない程簡単なプログラム。例えばこんな感じ。
example.php
1 2 3 |
<?php echo $_GET["message"]; ?> |
こうすると、http://example.com/example.php?message=hogeってwebブラウザで叩くと、hogeってページが表示される。このとき、httpリクエストはPHP内では$_GETという名前の連想配列で管理される。ちなみにPOSTの場合は$_POSTという名前の連想配列で管理される。非常に簡単。でもこのままだとやっぱり困るので、せめてあるかないかチェックくらいしておく。
example.php
1 2 3 4 5 6 7 |
<?php if(isset($_GET["message"])){ echo $_GET["message"]; } else { echo "no message"; } ?> |
こうすると、メッセージにパラメータが入ってるかどうかをチェックできる。PHPの場合はisset関数でこれをチェックする。さらにモジュラーにするために、実際に処理を定義したcontroller.phpをそこから呼ぶようにしてみる。
example.php
1 2 3 4 5 6 7 8 9 10 |
<?php include (dirname(__FILE__)."/controller.php"); if(isset($_GET["message"])){ $controller = new Controller(); $message = $_GET["message"]; $controller->echoMessage($message); } else { echo "no message"; } ?> |
controller.php
1 2 3 4 5 6 7 |
<?php class Controller{ public function echoMessage($message){ echo $message; } } ?> |
こうすることで、URLを管理する部分と、実際に処理をする部分を別々に管理できる。余談だけど、includeするときは、しっかりとパスストリングを確かめないと、変なエラーでハマるかも。(dirname(__FILE__)関数は、最後に”/”をつけてくれないから、自分でつける必要がある、等)。