【PHP】webアプリケーションの構成を整える
はじめに
自作のポートフォリオサイト(フレームワークなし)のファイル構成が、機能拡張などを繰り返していくうちにそれはもうめちゃくちゃになっていたので、腰を据えてメンテナンスをした。
内容
メンテナンス前は以下のようなフォルダ構成となっていた。
root
├css … スタイルシート
├js … jsファイル
├inc
│├page … 表示する内容のphpファイルのフォルダ
│└logic … 表示時のロジックのphpファイルのフォルダ
├index.php … トップページ
├xxx.php … ページ①
├yyy.php … ページ②
├zzz.php … ページ③
…
ページを遷移する際は、http://〜〜/xxx.php?param1=val1¶m2=...
と言ったようにページや遷移の際の変数をurlにて指定していた。
これはマズイ、というかスマートではないと思っており、結果以下のように変更した。
root
├css … スタイルシート
├js … jsファイル
├model
│├xxxModel.php
│├yyyModel.php
│…
│
├control
│├xxxController.php
│├yyyController.php
│…
│
├view
│├parts
││├header.php
││├header-meta.php
││└footer.php
│├xxx.php
│├yyy.php
│├zzz.php
│└layout.php
└index.php … トップページ
同時に遷移の際のurl指定の方法も変更した。
メンテ前はurlにてファイル名などを直接指定していたが、メンテ後は、http://〜〜/xxx/val1/…
といったように、urlに見られたくない情報をなるべく減らしている。
遷移の時は、まずindex.phpにてurlの分解を行い、遷移先のページを特定する。
次に、遷移先のページにて使用する変数の値をマスタやデータファイル等から取得する。
このロジックはxxxController.phpにて実行され、取得したデータはxxxModel.phpなどで保持する形となっている。
最後に、layout.phpを表示する。
layout.phpはheader.php、変数a、footer.phpの順にincludeし表示する構成となっており、この変数aに遷移先のページの雛形(xxx.phpなど)が割り当てられるといった動きをしている。
既にお察しの方もいると思うが、今回のメンテナンスでMVCモデルに基づいた構成に変更した。
冒頭でも記した通り、今後機能を追加する度にファイル数が増えて行くと、さらに収拾がつかなくなってしまう為、今回のように時間をかけてメンテナンスを行った。
まとめ
今回はざっくりとメンテナンスの内容について記したが、詳細については別の記事などで紹介していこうと思う。
フレームワーク?それって食べられる??
Discussion