【テンプレート】処理と見た目を分ける方法

タイトルが少しわかりにくいがhtmlデータのレスポンスには2通りある。

■静的データ
サーバに整形されたhtmlデータがありそれをレスポンスで返す。

■動的データ
phpを使い、ユーザーからのリクエストによってレスポンスするhtmlのデータをサーバー上で整形してからレスポンスしている。

ロジック

・ざっくりいうと、htmlデータの整形には、【A】phpでデータを扱うファイル【B】WEBデータを見た目をhtmlで整えるファイルが分かれており、URLで【A】にアクセスしたとき【A】のファイルが【B】のファイルを読み込み、【B】のファイルをレスポンスするという仕組みである。
※もちろんこの時、【A】ファイル内の変数や配列などのよって【B】内のhtml内の記述を少し作り直しているのだ。

f:id:aruku-hito:20191120214306p:plain

require_once関数

青が緑を読み込むために、青ファイルにrequire_onceを記述する。
自動的に緑ファイルを読み込む(=見た目のファイルを返している)

【青ファイル】

<?php
$message = "プレイヤーは戦った!";
$enemys = ['スライム','ドラゴン','ゾンビ','ゴブリン'];

require_once 'attack.tpl.php'; 
?>

【緑ファイル】
こちらは見た目ファイル。青ファイルにある変数や配列データは使えるのでところどころにphpがある。

<!DOCTYPE html>
<html lang='ja'>
    <body>
        <h1>戦いの結果</h1>
        <p><?= $message ?></p>
        <?php foreach($enemys as $enemy) {  ?>
     <p><?= $enemy ?> . 'を倒した!'</p>
        <?php }  ?>
        <p><a href='menu.php'>戻る</a></p>
    </body>
</html>


【レスポンス】
プレイヤーは戦った!
ドラゴンを倒した!
'ゾンビを倒した!
ゴブリンを倒した!