somemo's diary

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【php】レイアウトの共通化

phpで久し振りにフレームワークを使わずに書いて、不便だと思った部分をフレームワークにしていき、勉強しています。参考はパーフェクトphpです。

題材はチャットです。ロビーから部屋入口にはいり、さらに部屋へという構成にしようと思っています。

レイアウト

最終的な出力はhtmlなので、htmlタグ(DOCTYPE, html, head, body)で構成されています。もちろんbodyは各ページによって異なります。つまり、body以外は共通部分としてまとめることができます。

まず、ロビーを作成しました。この段階でコミットしておきます。そして、共通部分を以下のように切り出します。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf8">
  <title>Chat</title>
</head>

<body><?php echo $_content ?></body>

</html>

次に、可変部分の作成です。

<?php ob_start() ?>

出力・処理内容

<?php
  $_content = ob_get_clean();
  include 'layout.php';
?>

これにより、可変部分のみを記述すればよくなりました。また、共通部分を修正することで全体に反映されるようになりました。ただし、そのためには毎回出力の制御も記述する必要があります。今後は、この記述もしないですむように改善していきます。