ホームページ >バックエンド開発 >PHPチュートリアル >スマートに構造化された PHP プログラムを作成する_PHP チュートリアル
この記事を長い間書きたいと思っていましたが、時間がなくて書き上げることができませんでした。私はその方法を説明するためにここにいるのではなく、この記事が効果的で柔軟なネットワーク アプリケーションを構築する方法について議論するための単なる紹介になれば幸いです。
Web アプリケーション開発に携わって 2 ~ 3 年が経ち、Geocrawler 用に書いたコードを振り返ると、それが自分のものであるとは信じられなくなりました。 GPLのため、PHPBuilderのソースコードも混在しています。
最近、私は経験豊富な PHP 開発者として、SourceForge の作成を手伝っていますが、これが最終結果の範囲を示していると思います。優れたコードは、適切なライブラリと関数呼び出しを備えた複数の部分に分割され、サイトの各部分が他の部分から比較的独立している必要があります。
しかし、これはまだ最善ではありません。もしやり直せるとしたら、HTML 層をデータ層から分離することにもっと重点を置き、オブジェクトと明確な関数ライブラリを通じてこれを実現するでしょう。
美しいグラフィック
マネージャーが美しいグラフやチャートを使って説明するのが好きなのはわかっています。これは私たちに最高の印象を残すでしょう。構造の背後に隠すというこのアイデアを使用すると、ロジックを外観から分離できます。これは、あらゆる複雑なプログラムを「API/データ アクセス レイヤー」で表現できることを意味します。
セキュリティチェックや更新された文章などをHTML層に入れるのではなく、それらをまとめてAPI層に入れる方が良いでしょう。この HTML レイヤーには、単純な関数呼び出しと返された配列、オブジェクト、その他のカスタム オブジェクト、およびデータベース検索結果のコレクションなどのみが含まれています。
これを行うと、最上層が非常に薄くなり、作成とメンテナンスが簡単になります。
次の例では、この HTML インターフェイスには、API レイヤーの一部の関数、一部の HTML ツール ライブラリ (ポップアップ ボックスなどを生成できる)、およびデータベース抽象化から呼び出されるいくつかのデータベース操作メソッドへの直接呼び出しのみがあります。レイヤー (特定のデータベースにバインドする必要はありません)。
基本
柔軟な PHP プログラム構造の最も基本的な側面は次のとおりです:
データベースの独立性
インターフェイスの独立性
移植性
オブジェクト指向、または少なくとも関数ライブラリで構成されている必要があります
他にもありますか?
もちろん他にもいくつかありますが、それらは大きすぎると思います。おそらく、ご自身で指摘していただいてもよいでしょう。
それぞれについて詳しく話しましょう。
1. データベースの独立性
サイトを作成するときは、サイトがどこで実行されるかわかりません。もちろん、サイトを大きくし、トラフィックを多くする必要があります。したがって、MS Access やその他の軽量データベース システムに縛られる必要はありません。さまざまなデータベース システムにすぐに接続することはできませんが、それらを簡単に切り替えることができる可能性があります。データベース呼び出しを抽象化するには、いくつかの異なるオプションがあります。 PHP の独特なアプローチは、PHP の異なるデータベースごとにアクセス関数が異なるため、異なるデータベース システムごとに異なるコードを記述する必要があることです。これを回避するには、PHPLib、PEAR の次のバージョン、および SourceForge で説明されているもののような、抽象データベース アクセス レイヤーを使用できます。
2. インターフェースの無関係
アプリケーションのテクノロジーとそれが実行されるサイトのどちらが重要ですか?本当のところは分かりません。私はこれを信じていませんでした - HTML は標準です。特に Web アプリケーションの場合、インターフェイスを変更すると、常に書き直す必要があります。ただし、アプリケーションが大規模で複雑な場合は、アクセス チェックやその他のコードをサイト プログラムのあらゆる場所にコピー アンド ペーストしたくない限り、データベース用に他のインターフェイスを確立する必要があります。これは、アプリケーションを正しく設計すれば、単純に小さな WAP インターフェイスを作成してデータベース アクセス オブジェクトを呼び出すだけで、サイトを簡単に書き換えることができることも意味します。しかし、プログラムを適切に設計しないと、HTML バージョンを WAP バージョンに変更するのは複雑なプロジェクトになります。
私はこのアイデアを SourceForge にも取り入れました。私たちのためにバグやタスクなどを送受信してくれる巨大なユーザーベースがあります。まず、私たちはこれらすべてが Web ページを通じてインターフェースされることを指摘しました。その後、Eric Raymond やその他の人々からの圧力により、データベースへの外部インターフェースに XML を使用することにしました。
幸いなことに、私たちは 4 月にプログラムのコアロジックコードをインターフェースから分離しました。私たちのやり方を説明してみます。あなたの仕事に役立つことを願っています。
SourceForge バグ トラッカーとその他のツールは、HTML ライブラリとデータ アクセス ライブラリの 2 つのライブラリに分割されています。このデータ アクセス ライブラリは、入力された値の正確性をチェックし、セキュリティ チェックを処理し、成功/失敗時に TRUE または FALSE を返します。
簡略化のため、この例は完全なオブジェクト パターンに基づいていないため、この基本クラスとその派生クラスなどについて説明する必要があります。この例が最も一般的なアイデアを提供すると思います。HTML ライブラリの例
//データベースに接続します
require ("database.php");
//ヘッダー/フッター HTML などの一般的なユーティリティ
require ("html.php");
//データ アクセス ライブラリ
require ("bug_data.php");
echo site_header("ページタイトル");
バグを更新する
";
if (bug_data_update($field1,$field2,$field3)) {
echo "
アップデートに失敗しました!
";
} else {
エコー "
バグが正常に更新されました
";
//グローバル エラー文字列をエコーする
echo $フィードバック;
}
echo site_footer();
?>
データ アクセス ライブラリの例
3. 移植性
それは疑いの余地がありません。コードを 1 つの固定サイトに限定したくない場合は、色の選択、要素名、フォントなどを変更する可能性があるため、複数のページに含まれる構成ファイルをセットアップすることをお勧めします。重要なのは、サイトがモジュール式であり、HTML ファイルをコピーして貼り付ける必要がないということです。私はこれらを関数に入れて、必要なときにいつでも呼び出すことが多いです
同じアプローチがデータベース パスワードやデータベース接続にも使用できます。文字列など、これらはデータベース処理用の抽象化レイヤーに入れることができます
4. オブジェクト指向/関数型
COBOL で開発しているわけではないため、プロセスを複数の関数呼び出しに分割できます。各呼び出しは自動動作であり、場合によっては他の関数の短いセクションを呼び出して結果を返すだけです。
これを完了するには、ユーザーがログインしているかどうかを確認することができます。 . 関数ですが、検証システムを変更したい場合は、コードを作成するたびに、すべてのページを変更する必要があります。複数の場所で使用される場合は、ライブラリに入れることを検討してください
他に何かありますか
もちろん、まだ話していないことがたくさんあります。意見を聞かせてください。次の記事。特に大規模で複雑なアプリケーションを作成した場合は、どのように計画したのか、またそれを実行しようと思ったのかを聞きたいです
。
http://www.bkjia.com/PHPjc/314028.html