PHPでコントローラーを作ってみる

前回どんなURLでもindex.phpにリダイレクトするようになりました。

freelancer.hatenablog.jp


まずやることはURLの解析。

<?php

// URIを取得する
$uri = $_SERVER["REQUEST_URI"];

?>

以下のURLでアクセスされた場合

$uriには1の場合「/content1」、2の場合「/subcontent2」が格納されます


この$uriに格納された値を/で区切った1番目の名称を表示するページのPHPファイルの名称とし、

viewというディレクトリに保存されていることにします。

つまりは1の場合./view/content1.php、2の場合./view/content2.phpを表示するということです。

<?php

// URIを取得する
$uri = $_SERVER["REQUEST_URI"];

// URLを/毎に分割
$paths = split("/", $uri );

?>

splitで指定した文字列で分割します

1の場合は以下のようになります

split[0] = ""

split[1] = "content1"

後は表示したい場所で該当するphpファイルを読み込むだけ

<?php

// URIを取得する
$uri = $_SERVER["REQUEST_URI"];

// URLを/毎に分割
$paths = split("/", $uri );

?>
<!DOCTYPE html>
<html lang="ja">
<head>
    <title>テスト</title>
</head>
<body id="body">
この下によみこまれたphpファイルの内容が表示される<br>
<?php require_once("./view/".$paths[1].".php");?>	
</body>
</html>

content1.php

<div>コンテンツ1</div>

content2.php

<div>コンテンツ2</div>

これで1の場合はコンテンツ1が、2の場合はコンテンツ2が表示されるようになります。
実際はもう少し複雑なレイアウトでURLのルールも複雑なのですが、考えた方はこれを基本にしてます。