私は最初の実際のPHPWebサイトをプログラミングしていて、自分のコードを自分で読みやすくする方法を考えています。私が使用している参考書は、PHPとMySQL Web Development4thedです。
前述の本は、ロジックとコンテンツを分離するための3つのアプローチを示しています。
- ファイルを含める
- 関数またはクラスAPI
- テンプレートシステム
これらの概念に頭を悩ませるのに時間がかかるので、私はまだこれらのどれも選択していません。ただし、ここでコピーして貼り付け、変更を加えるだけなので、コードは最初の2つのハイブリッドになりました。
プレゼンテーション側では、すべてのページに、ヘッダー、トップナビゲーション、サイドバーナビゲーション、コンテンツ、右側のサイドバー、フッターという共通の要素があります。
この本の関数ベースの例は、すべてのプレゼンテーション例を処理するこれらの表示関数を持つことができることを示唆しています。したがって、私のページコードは次のようになります。
display_header();
display_navigation();
display_content();
display_footer();
ただし、この本の例では、HTMLとPHPが次のように混ざり合ったprintステートメントが含まれているため、これは好きではありません。
echo "<tr bgcolor=\"".$color."\"><td><a href=\"".$url."\">" ...
私はむしろ、その逆ではなく、途中でいくつかのPHPを含むHTMLを使用したいと思います。
ページの先頭でデータベースからすべてのデータを取得して配列に配置するようにページを作成することを考えています。変数のデータも取得します。これらのプロセスのいずれかにエラーがある場合は、エラー文字列に入れます。
次に、HTMLコードで、foreachを使用してこれらの配列をループし、コンテンツを表示します。場合によっては、表示される変数がいくつかあります。エラー変数が設定されている場合は、適切な位置に表示します。
(補足として:私が理解していないことは、ほとんどのサンプルコードでは、データベースクエリなどでエラーが発生した場合、常に次のことが発生することです。
else echo 'Error';
サンプルコードでエラーが発生すると、HTMLが開始する前でもエコーアウトされることがあるため、これは私を困惑させます...)
ASP.NETを使用したことがある人のために、私はコードビハインドファイルとlblErrorにある程度慣れており、ここで同様のことをしようとしています。
私が理解していないのは、この「最初にロジックを実行し、次にプレゼンテーションを実行する」ことをどのように実行すれば、たとえばナビゲーションロジックやナビゲーションプレゼンテーションをすべてのページに複製する必要がないかということです。
インクルードファイルをいくつか実行する必要がありますか、それともここで関数を使用できますが、少し異なりますか?プレゼンテーションとロジックを分離するこれらの「スタイル」がもう少し徹底的に説明されている良い記事はありますか。私が持っている本には、このことについての段落が1つしかありません。
私が考えているのは、ここでPHPプログラミングを行うためのいくつかの概念や方法について話しているということですが、それらの用語はまだわかりません。
これは簡単な質問ではないことを私は知っています、私は自分の考えを整理するのに少し助けが必要です。