PHPサイトのアーキテクチャを作成するための段階的なアルゴリズム

免責事項 :このテキストは、私にこのトピックに関する正気の資料のほとんど完全な欠如をロシア語で書くことを強制しました。 これは大学ではあまり教えられておらず、PHPチュートリアルと公式マニュアルにはこれについては記載されていませんが、これはプログラムの開発で最も重要なポイントであるアーキテクチャの作成です。 悪いアーキテクチャはプロジェクトを殺す可能性があるため、決して日の目を見ることはありません。 貧弱なコードであっても優れたアーキテクチャであり、一部の新参者は優れたコードを書いて驚くことができます。

アーキテクチャの開発は、「このようなWebサイトが欲しい」というアイデア、または「このようなWebサイトが必要」というアイデアを誰かが思いついたときに開始する必要があります。 残念ながら、ほとんどの開発者はすぐにコードを書き始めますが、必要なものでさえありません。

コードを書く前に、ペン、ワードパッド、Word、ライター、さらにはコードエディターを備えた紙片を用意して、いくつかの手順を実行します。

ステップ1.メインタスクのステートメント


アーキテクチャは上から下へと開発されています。 これはどういう意味ですか? これは、最も重要なサブシステムまたはより技術的なサブシステムのサービスを開始する前に、まず最も重要なサブシステムについて考え直すことを意味します。

多くのプログラマーは、ルーターを使用したサイトの開発、データベースへの接続、エラー処理を開始します。これにより、将来コードを書き直す必要が生じたり、予測できないものにつまずくとすぐにコードに松葉杖を大量に挿入する必要が生じます。

すべてを予測することは不可能であり、このためにはシステムを上から下に開発する必要があります。 動作する高レベルクラスの存在により、必要なサービス要件がすべて自動的に決定されます。

これが唯一の方法ではありませんが、経験から、デザインパターンの中で水中の魚のように感じない人、またはまったく知らない人に最適です。

したがって、ブログ、オンラインストア、歯科医院のWebサイトが必要です。

あなたのサイトで何が一番重要かを決めてください。

ブログの場合、これらは明らかにエントリです。 ストアの場合-商品。 診療所のサイトについて-サービス。

サイトの開発を開始するコードをすでに作成できます。

class  { } 

またはクラスの製品{}、またはクラスのサービス{}

これがメインのサブシステムです。 すぐに正確に管理する内容を書くことができます。

 class  { } 

またはクラス製品{}、またはクラスサービス{}

ステップ2.システムでできることを決定する


「録音」のメインサブシステムを作成しました。 次のステップ:彼女ができること、私たちがサイトに教えたいことを決定する。

明らかに、彼女はレコードの作成、レコードの削除、およびレコードの受信ができるはずです。

サイトコードを書くことを忘れて、ユーザー、URL、ページレイアウトを忘れてください。 文字列、数値、配列、オブジェクトなどのベアデータを操作します。

コードを書きます:

 class  { public function _() {} punlic function _() {} public function _() {} } 


ステップ3.何を扱っているかを理解する


レコードとは何ですか? サービスとは何ですか? 製品とは何ですか? プログラマーとしてのあなたにとって、それは単なるデータの集まりです。 3番目のステップでは、それがどのような集合体であるかを判別します。

将来いつか必要になるすべてのものを予測しようとしないでください。 最も最小のセットを使用してください。 このため、将来的に簡単に拡張できるようにアプリケーションアーキテクチャを構築しています。

明らかに、レコードはレコードのタイトルとテキストです。 サービスと製品-名前、説明、価格。

コンピュータは人と比べてあまり賢い生き物ではありません。「しかし、緑色の子猫についての記録を見せてください」と言うことはできないので、彼は常にいくつかのユニークなコードを必要とします。まさにあなたが望むものを見つけました。

これは、各レコードに固有の序数(id)、または同様に一意の文字列値です。

したがって、レコードはレコード識別子(id)、タイトル、テキストです。

他に何も必要ありません。

ステップ4.必要な知識の決定


システムの各アクションについて、このアクションを実行するためにシステムが知る必要があることを理解する必要があります。

アクション「create_record」では、レコードのタイトルとテキストを知る必要があります。 コンピューターだけが内部識別子を必要とするので、それを考え出させてください。

アクション「delete_record」および「get_record」の場合、作成時にコンピューターによって割り当てられたレコードの識別子のみを知る必要があります。

 class  { public function _($, $) {} punlic function _($) {} public function _($) {} } 

起こったことは、クラス/モジュール/サブシステムのインターフェースと呼ばれます。

ステップ5.結果の定義


また、特定のアクションを実行するために必要な知識を学んだので、これらのアクションがどのように終了するかを理解する必要があります。

コンピューターが成功した場合、


コンピューターが成功しなかった場合、


何かがうまくいかなかったすべての状況では、プログラムの動作はシステムのすべてのモジュール/クラス/サブシステムで同じでなければなりません。 PHPには、trigger_errorと新しい例外をスローするという2つのオプションしかありません。 自分で発明することもできますが、既存のものに乗る方法を学ぶまで車輪を再発明しないでください。 新しい例外をスローするのが最適なオプションです。

公式マニュアルの例外セクションをお読みください。

ステップ6.再び最初から


最初のステップでは、レコード管理システムの作成に加えて、レコード自体のクラスも作成しました:class record {}

彼女については、メインの手順と同じ手順1〜5を行う必要があります。

すべてを正しく行った場合、同様の結果が得られます。

 class  { public function _() {} public function _() {} punlic function _() {} public function _($_) {} public function _($_) {} } 


ステップ7.コードを書く


すべてが作成されたので、コーディングを開始できます。 PHPに精通していれば、問題はありません。

どのくらいの時間を費やしましたか? ほんの少しですが、それでも未来に起こったことのすべての利点を感じてください。

ひどい略語MVCの文字Mの下に隠れてしまいます。

おわりに


私は多くのニュアンスを考慮しませんでした、それらは10のそのような記事には十分でしょうが、あなたの開発の基礎はすでにあります。 これらは非常に基本的なものであり、いずれの場合も、PHPを1つのファイルでHTMLに干渉したり、コードを記述するときに一連の関数を生成したりするよりも優れています。

CMがわかりました。 VおよびCに関しては、これは他の記事のトピックです。 したがって、簡単に。 あなたが十分に賢いなら、他の記事は必要ありません。

Cは、システムがユーザーのアクションに応答する場所です。 これは、ユーザーが何をするかについて考える必要がある場所です。 ユーザーがブログエントリを作成したいと考え、作成フォームに記入すると、すべての準備が整いました。 私は記録を読みたかったのですが、もう一度あなたは彼の要求を一行で満たします。 そこで、主なタスク(ステップ1)は、ユーザーが何を望んでいるかを理解することです。

V-SmartyまたはTwigのテンプレートエンジンを学習します。 テンプレートエンジンを使用するかどうかについては多くの議論があり、両側で多くの説得力のある議論があります。 真実は、Web開発者がテンプレートエンジンを使用できないことは許されないということです。 したがって、それらをマスターし、それが気に入らない場合は拒否します。

上記のように、ロシア語ではこのトピックに関する価値のある文献はほとんどありません。
私が読むことをお勧めできる唯一の本:Steve McConnellのPerfect Code。

誰かが他の資料を知っているなら、私に参照を投げてください。 私は喜んでそれを読んで、初心者にそれをお勧めします。

Source: https://habr.com/ru/post/J247495/


All Articles