PHP でのスマート アーキテクチャの使用_PHP チュートリアル
ずっとこの記事を書こうと思っていたのですが、なかなか時間が取れませんでした。これは、その方法を説明することを目的としたものではありません。優れたスケーラブルな Web アプリケーションを開発する方法に少しでも光を当てることができれば幸いです。
私は 2 ~ 3 年間開発に携わってきました。最初に作成したプログラムを振り返ると、自分で作成したとは思えません。今では、sourceForge (http. :/ /sourceforge.net/) は、私のより成熟した作品の 1 つであり、コードはさまざまなクラスと関数に分割されています。データベースの構造も非常に明確です。サイトのさまざまな部分は他の部分から独立しています。
しかし、このサイトは完璧ではありません。もう一度書かなければならない場合は、オブジェクトまたは関数ライブラリを通じて HTML 層とデータベース層をより明確に区別するつもりです。
多くのマネージャーが自分のアイデアをチャートの形で表現することを好むことがわかりました。ここでもそれを提供します。このシステムの考え方は、ロジックを表層から分離することです。つまり、複雑なものはすべて「API/データ アクセス層」にプッシュダウンされます。
セキュリティチェックや更新などのコードについては、HTML 層に配置しないことが最善であり、これらの理論上のコードは API 層に配置する必要があります。 HTML レイヤーは単純な関数呼び出しを行い、配列、オブジェクト、または私のお気に入りのデータベース結果セットを返すだけです。
この図では、HTML インターフェイスは API レイヤーを直接呼び出すか、HTML ツール ライブラリ (ポップアップ ウィンドウの生成など) を呼び出します。これらのライブラリはデータベース抽象化レイヤーを通じてデータベースを呼び出すことができます (つまり、データベース上の何らかの種類にバインドする必要はありません)。
基本ポイント
スマートシステムには以下の基本ポイントがあります:
1.データベースに依存しない
2.プレゼンテーション層の独立
3.簡単に変更できます
4.オブジェクト指向、または少なくとも関数ライブラリ呼び出しに分割する
これらは私が考えたものです。上記に加えて、他にもポイントがあるはずです。フォーラムで提案してください。
上記の点について、以下で詳しく説明します。
1.データベースの独立性
設計時には、サイトにかかる負担がどれほど大きいかわからない場合があります。そのため、MS Access などの軽量データベースにバインドできないことを覚えておく必要があります。したがって、データベースを変更する場合は、あまり多くの変更を加える必要がなく、これが理想的です。
PHP を使用する場合、さまざまなデータベースの関数呼び出しが異なるため、使用するデータベースに応じて異なるコードを記述する必要があります。この状況を変えるには、PHPLib などのデータベース抽象化レイヤーや他者が開発したライブラリを使用できます。
2.プレゼンテーション層の独立性
本当に巨大で複雑なアプリケーションを開発したい場合は、コピーアンドペーストの作業を大幅に減らすために、データベースのインターフェースについて考え始める必要があります。たとえば、携帯電話ユーザーがアクセスできるように、サイトを WAP 対応にする必要があります。アプリケーションが適切に設計されている場合は、すべてのデータベース アクセス オブジェクトを呼び出すための軽量の WAP プレゼンテーション層を作成するだけで済みます。ただし、アプリケーション システムが適切に設計されていない場合は、それを書き直す必要があるため、 HTML バージョンと WAP バージョンを同時に。
たとえば、SourceForge サイトを開発しているとき、多数のユーザーがバグやタスクなどを送信しました。当初、私たちはすべて Web インターフェイスを通じて実行できるように設計しました。その後、何人かの人々からの圧力を受けて、データベースの表示に XML インターフェイスを使用することにしました。サイトのコア ロジックをプレゼンテーション層から分離することに成功しました。 SourceForge の現在のバグ追跡ツールとその他のツールは、HTML ライブラリ クラスとデータベース クラスという 2 つの異なるライブラリを使用します。データ クラスは入力値が有効かどうかを確認し、セキュリティ検出を処理する責任を負いますが、プレゼンテーション層は成功/失敗に基づいて true または false を返すだけです。 簡単にするために、この例は完全なオブジェクト モデルに基づくものではありませんが、基本クラスと、他のオブジェクトがこれらの基本クラスをどのように拡張するかを説明する必要があります。しかし、この例はいくつかの概念を確立するのに役立つと思います。
HTMLクラスの例
//データベースに接続します
require("database.php");
//よく使われるHTMLヘッダー/フッター
//データアクセスライブラリclass
require ("bug_data.php");
echo site_header("ページタイトル");
echo "
バグを更新中
"; ) {
echo "
アップデートに失敗しました!
"; else {
echo "
バグは正常に更新されました
";えー() ;
?>
データアクセスライブラリの例
/**
* 更新データベースのバグを制御します
* データの有効性とセキュリティをチェックし、成功した場合は true を返します。
* 失敗した場合は false を返します
*
*
*/
function bug_data_update ($field1,$field2,$field3) {
//グローバル文字列、エラーを返す
global $フィードバック;
//$field1 と $field2 は必須です
if (!$field1 || !$field2) {
$フィードバック="フィールド 1 とフィールド 2 は必須です"
return false
}
//それを確認します。ユーザーは更新する権利があります
if (!user_isadmin()) {
$フィードバック="バグを更新するには管理者である必要があります"
return false
}
//バグを更新できるようになりました
$ result=db_query("UPDATE bug ".
"SET field2='$field2',".
"field3='$field3' ".
"WHERE id='$field1'");
// now ステートメントが正常に実行されたかどうか
if (!$result) {
//update が失敗しました
return false;
} else {
return true;
?>変更は簡単です
もちろん、アプリケーション全体で絶対 URL を使用することはありませんが、色、要素名、フォント、その他の可能なオプションの選択は絶対的なものではなく、構成内に含める必要があります。ファイルを作成し、それをすべてのページに含めます。サイトのスタイルも自己完結型である必要があります。そのため、すべてのページにコピーして貼り付ける必要はありません。通常、HTML を関数に入れて、必要なときに呼び出すことができます。
データベースパスワード、データベース接続などについても、データベース抽象化レイヤーに配置されます。
4.オブジェクト指向/関数型
プロセス処理をさまざまな関数呼び出しに分割できます。各呼び出しは 1 つのことを行いますが、他の関数を呼び出して結果を返すだけで済む場合もあります。
良い例は、ユーザーがログインしているかどうかをすべてのページでチェックインすることです。オブジェクトや関数を使用しない場合、認証システムが変更されたときに、ライブラリ内の関数呼び出しを変更するだけでなく、各ページで変更を加える必要があります。コードを作成する前に、そのコードをサイト内で複数回使用する場合は、ライブラリに移動する必要があることを考えてください。 何か追加することはありますか?
思いつかなかった点もあるかと思いますが、ご意見お聞かせください。特に、大規模で複雑なアプリケーションを作成しましたが、再度作成する必要がある場合、どのようなシステムを構築するのか、どのような変更を加えるのかを知りたいと考えています。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。
