ずっとこの記事を書こうと思っていたのですが、なかなか時間が取れませんでした。これは、その方法を説明することを目的としたものではありません。優れたスケーラブルな 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 つのことを行いますが、他の関数を呼び出して結果を返すだけで済む場合もあります。
良い例は、ユーザーがログインしているかどうかをすべてのページでチェックインすることです。オブジェクトや関数を使用しない場合、認証システムが変更されたときに、ライブラリ内の関数呼び出しを変更するだけでなく、各ページで変更を加える必要があります。コードを作成する前に、そのコードをサイト内で複数回使用する場合は、ライブラリに移動する必要があることを考えてください。 何か追加することはありますか?
思いつかなかった点もあるかと思いますが、ご意見お聞かせください。特に、大規模で複雑なアプリケーションを作成しましたが、再度作成する必要がある場合、どのようなシステムを構築するのか、どのような変更を加えるのかを知りたいと考えています。

thesecrettokeepingaphp-poweredwebsterunningsmootlyunderheavyloadinvolvesseveralkeystrategies:1)emform opcodecoduceSciptionexecutiontime、2)aatabasequerycachingwithiThing withiThistolessendavasoload、

コードをより明確かつ維持しやすくするため、依存関係が関心(DI)に注意する必要があります。 1)DIは、クラスを切り離すことにより、よりモジュール化されます。2)テストとコードの柔軟性の利便性を向上させ、3)DIコンテナを使用して複雑な依存関係を管理しますが、パフォーマンスの影響と円形の依存関係に注意してください。

はい、最適化されたAphPossibleandessention.1)CachingingusapCutoredatedAtabaseload.2)最適化、効率的なQueries、およびConnectionPooling.3)EnhcodeCodewithBultinctions、Avoididingglobalbariables、およびUsingopcodeching

keyStrategIestsoSificlyvoostphpappliceperformanceare:1)useopcodecachinglikeToreexecutiontime、2)最適化abaseの相互作用とプロペラインデックス、3)3)構成

aphpDependencyInjectionContaineriSATOULTAINATINAGECLASSDEPTINCIES、強化測定性、テスト可能性、および維持可能性。

SELECT DEPENTENCINGINOFCENT(DI)大規模なアプリケーションの場合、ServicElocatorは小さなプロジェクトまたはプロトタイプに適しています。 1)DIは、コンストラクターインジェクションを通じてコードのテスト可能性とモジュール性を改善します。 2)ServiceLocatorは、センター登録を通じてサービスを取得します。これは便利ですが、コードカップリングの増加につながる可能性があります。

phpapplicationscanbeoptimizedforspeedandEfficiencyby:1)enabingopcacheinphp.ini、2)PreparedStatementswithpordatabasequeriesを使用して、3)LoopswithArray_filterandarray_mapfordataprocessing、4)の構成ngincasaSearverseproxy、5)

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

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