ホームページ php教程 php手册 PHP を使用した堅牢なコードの開発 (1): 高レベルのシナリオの紹介

PHP を使用した堅牢なコードの開発 (1): 高レベルのシナリオの紹介

Jun 21, 2016 am 09:10 AM
cookie html php web windows

PHP を使用した堅牢なコードの開発 この一連の記事は、中規模から大規模のアプリケーションにおける現実の問題の解決について説明しています。この一連の記事では主に PHP 4 で利用できる新機能に焦点を当て、開発作業を容易にするためのヒントやコツを多数紹介します。この一連の記事では、豊富なサンプル コードとともに、学ぶべき多くの例とテクニックが紹介されています。この最初の記事では、PHP の第一人者である Amol Hatwar が、中規模から大規模の Web アプリケーション向けに、エラーがなく保守しやすいコードを設計および作成する方法について概要を説明します。
Web アプリケーションを構築する開発者で、速度、機能性、プラットフォームへの依存性が必要な場合は、PHP が最適です。 PHP は無料で、学習と導入が簡単です。これらが、PHP の人気を高めている最大の利点です。しかし、これらの利点は欠点にもなる可能性があります。 PHP は非常に使いやすいため、開発者は計画や設計を行う必要があるときに、エディターにコードを押し込むことがよくあります。さらに、PHP では問題を解決する方法が複数あるため、後から修正するのが難しい悲劇的な間違いを犯しやすくなります。

この一連の記事では、多くの間違いを避ける方法を学びます。一度に 1 ステップずつ実行していけば、1 回か 2 回の試行でエラーのないコードを作成できるようになったとしても驚かないでください。また、開発作業を容易にする PHP 4 で利用可能な新機能についても説明します。ここで取り上げる例のほとんどは、スクリプトの構成とインストール、ファイルの処理、データベースの使用法などの現実の問題を扱います。初めての方でも、簡単に理解できるでしょう。ただし、PHP の基本的な知識があることを前提としています。復習が必要な場合は、この記事の最後に記載されている参考文献が役立つかもしれません。 (「参考文献」を参照してください。)

強力な基盤を構築する
PHP でコードを記述することは、C などの言語でコードを記述することと非常に似ています。これらは構文的に似ているため、同様のコード保守の問題も引き起こします。大規模なアプリケーションを開発する必要がある場合、大量のコードを記述しなければならない場合があります。時間が経つと、このコードは管理できなくなり、すぐにバグが侵入する可能性があります。この発言をどこで聞いても、少なくとも完全には信じないでください。ただし、より重要な事実は、コードを頻繁にメンテナンスすることに気付いた場合、アプリケーションの設計がそもそも不適切である可能性があるということです。

コードを正しく設計します
最初に行う選択は、後でコードを記述するときの自由に影響します。このため、正しい設計が重要な前提条件となります。些細な問題を解決するときにデザインが余計な儀式になってしまうこともありますが、少なくともこれがやるべきことであることを知っておく必要があります。多くの人は、設計と計画を追加の諸経費とみなしています。しかし、貧弱な設計から始めるか、まったく設計をしないと、常にずさんなコードが作成されます。どんなに賢いコーディングを行っても、貧弱なデザインを補うことはできないということを覚えておいてください。アプリケーションの設計方法については、この一連の記事の範囲を超えていますが、Web アプリケーションを設計する際に留意すべき問題をいくつか提案します。

分割して征服
疎結合された小さな部分を通じて大規模なアプリケーションを設計および作成することが常に望ましいです。このようにして、すべての部品がメンテナンス可能になります。たとえば、コンテンツ管理システム (CMS) は、ユーザー認証、表示、コンテンツ解析、統計の表示など、多くの小さなモジュールに分散される場合があります。また、モジュールが十分に一般的であれば、開発する他のアプリケーションでコードを再利用できます。プログラマーはいつもこれを行っていますが、それでも不満を言います。コーディングに関しては、各モジュールに絶対に必要な機能を与えて、それで終わりにするのがコツです。モジュールに割り当てられる機能は適切である必要があります。

ページ内では決して考えないでください
PHP を使用して HTML ページをより動的にすることに興味がある場合は、このセクションが最適です。この習慣は通常、すべてのページに日付と時刻を表示して最新の状態に見せたいときに始まります。各 HTML ページは行数が制限された小さな PHP スクリプトになり、日付関数はどこかに隠されます。これが希望する場合は、これが仕事を実現する最も簡単な方法であることに同意する必要があります。ただし、ページに表示される日付形式を変更するには、どのような変更を加える必要があるかを想像してください。各ページ内のコードを変更する必要があります。

明らかに、これを達成するためのより良い方法があります。私のお気に入りの方法は、構成ファイルを使用し、date() 関数のフォーマット文字列を保持する定数を構成ファイル内に定義することです。その後、必要に応じて date() 関数を使用できます。各ページは引き続きスクリプトで終わりますが、1 行のコードに加えなければならない変更の数は最小限に抑える必要があります。

図 1. ハードコーディングを避ける




上の図に示すように、すべてのページで日付形式が変更されていることがわかります。ここでの考え方は、コードの重複やハードコーディングを避けることです。大規模なアプリケーションを作成するときは、このことに留意してください。コードの重複を避けると、デバッグとメンテナンスが容易になります。

クライアント側の要件を軽減する
Web ページとアプリケーションの種類は、さまざまな方向に進化しました。最初に画像と画像マッピングが登場し、次に Java アプレットとクールなアニメーション用のクライアント側スクリプトが登場しました。今度はフラッシュの登場です。影響力を持つことは良いことですが、Web の背後にある全体的な考え方は、情報を必要とする人が誰でも簡単に情報にアクセスできるようにすることであることを覚えておく必要があります。すべてのブラウザーやプラットフォームでサポートされていないテクノロジーを使用すると、ユーザーの情報へのアクセスが拒否される可能性があります。あなたの Web サイトにアクセスできない人が次の顧客になるかどうかはわかりません。

ネットワーク トラフィックを可能な限り最小限に抑えるようにアプリケーションを設計する必要があります。トラフィックが多すぎて、機能させるだけの Cookie クラスをブラウザに提供している Web サイトをよく見かけます。大量の Cookie を改ざんすると、帯域幅が消費されるだけでなく、さまざまな点で管理が困難になります。経験則として、アプリケーションが 40 KB を超えるデータを送信する場合、またはページの読み込みに 5 秒以上かかる場合は、アプリケーションを最初から設計する必要があります。あちこちの小さな調整は長続きしません。周りを見回してみると、最も人気があり、最もアクセスされているサイトは非常にシンプルであることがわかります。

次のモバイル デバイスの波と、それらがアプリにアクセスするために使用する接続についても考慮する必要があります。ベスト プラクティスとして、アプリケーションは、コンテンツを要求するクライアントに基づいてコンテンツを適応させる必要があります。レオン・アトキンソン氏は、著書『Core PHP Programming』の 720 ページで、「HTML ドキュメントのサイズを小さく保つことはできますし、ネストされたテーブルなどの複雑な HTML を避けることもできます。しかし、すべての人の 28.8 モデムをアップグレードすることはできません。」と述べています。

コード、コンテンツ、表示を分離する
HTML はコンテンツを表示するためのマークアップ言語であり、PHP は HTML に埋め込まれたスクリプト言語です。これにより、たとえば日付の取得など、単純なタスクが非常に簡単になります。ただし、複雑な要件を実装する必要がある場合、PHP を HTML に埋め込むとコードの単純さが損なわれます。コード、コンテンツ、表示を可能な限り分離することをお勧めします。あなたが読んでいるこの文書について考えてみましょう。このドキュメントは、最初は XML ファイルとして作成されます。 HTML バージョンと PDF バージョンは、スタイルシートを使用して自動的に生成されます。コード (ページを表示するアプリケーション)、コンテンツ (XML ドキュメント)、および表示 (スタイル シート) は異なります。

コア機能をモジュールにカプセル化し、コードの重複を避けることが重要であるのと同様に、コンテンツ用に個別のソース コードを用意し、必要な方法でコンテンツを表示することも重要です。クライアントと接続速度に基づいてページをカスタマイズする柔軟性も向上します。また、プログラマー、デザイナー、作成者が互いに独立して作業できるため、大規模なプロジェクトに取り組んでいる場合には良いことになります。

デザインを捨てることを恐れないでください
誰が何と言おうと、アプリのデザインを学ぶには練習が最善の方法です。始めたばかりの場合は、多くの間違いを犯す可能性が高く、そうやって学んでいきます。悪いデザインは破棄する必要があります。コード、コンテンツ、表示を疎結合にしておく必要があるのはこのためです。悪いデザインを捨てることが、痛みを和らげる手段になります。古いコードを破棄し、より良いコードに置き換えると、コンテンツと表示が保持されます。

さて、コードを堅牢にするという約束に戻ります。自分のコードが他の人のコンテンツや表示に影響を与えることを常に覚えておく必要があります。コードがそのタスクに対応していない場合、他の部門がどれほど素晴らしい努力をしてもそれを補うことはできません。

堅牢なコードを作成する
コード要件が変更されていないと仮定すると、コードを変更する必要性に気づくことはありません。時々最適化や改善を行うことは別として、コードは十分に油を注いだマシンのように動作する必要があります。

難しそうですか?しかし実際にはそうではありません。率直に言って、堅牢なコードを書くのに天才は必要ありません。迷ったときは、脇道にそれないように、正しい質問を自分に問いかけてください:

安全ですか?
シンプルでわかりやすいですか?
プラットフォームに依存しませんか?
十分速いですか?
コードを保護する
多数のユーザーを満足させるシステムは安全でなければなりません。 PHP 自体はブラックハット ハッカーに対して脆弱ではありませんが、あまり確信を持たないでください。バージョン 4.2.2 より前の PHP 4 には、重大なセキュリティ上の欠陥がありました。機密データは常に適切な暗号化を使用してネットワーク上で保存または送信されるようにしてください。これは、ビジネスを処理し、情報 (クレジット カード番号など) を保存し、機密データを送信するアプリケーションにとってより重要です。

現在、ユーザーが送信したデータを信頼するのは困難です。使用する前にデータが検証され、クリーンであることを確認してください。 Web アプリケーションをインターネット上に置くと、システム、ソフトウェア、データ、ビジネスが広大なネットワークに公開されることになることに注意してください。

コードが常に安全に実行されるようにしてください。

コードはシンプルにしてください
コードは理解しやすく、読みやすく、十分に文書化されている必要があります。自分自身または他の人のコードに慣れるまでにかかる時間を短縮するには、プロジェクト全体で共通の命名規則とコーディング規則を使用します。コードを保守する時期が来たときに、これらの側面が確実に成果をもたらすように時間を投資してください。

コードをプログラムするときにコードを文書化することをお勧めします。すべてのスクリプトを解析して、見栄えの良い HTML 形式のドキュメントを作成できるツールはありません。コードの動作を変更した場合は、それに応じてドキュメントを変更してください。コードに実際に何も文書化されていない場合、コードの文書があっても意味がありません。

コードが文書化され、シンプルで理解しやすいものであることを確認してください。これは長期的には役に立ちます。

コードをプラットフォームに依存しないようにする
解決しなければならないもう 1 つの問題は、プラットフォームの独立性です。もちろん、Windows 上の PHP 用に書かれたスクリプトは、他のプラットフォーム上の PHP でも機能します。PHP はそのように設計されています。ただし、小さな不一致については注意する必要があります。たとえば、改行文字の表現方法は Windows と UNIX で異なります。

PHP の外部にあるデータベースなどのリソースにアクセスする場合も、抽出を使用する必要があります。コストを削減するために、アプリケーションがデータベース サーバーとして MySQL を使用しているとします。後で、より機能豊富なデータベースを使用することにした場合は、アプリケーションのコードを変更する必要があります。コードに大幅な変更を加えるのは常に面倒な作業であり、エラーが発生しやすいプロセスです。デシメーションを使用して、簡単に変更される部分への変更を分離します。アプリケーション全体を書き直す必要はありません。

必ずプラットフォームに依存しないコードを作成してください。これにより、アプリケーションの適応性と拡張性が向上します。

スピードを重視した設計
対処する価値のある最後の要素はスピードです。スクリプトがデータベースから約 300 個のエントリを選択してシャッフルし、ページを表示する間、誰も待ちたくありません。通常は、ユーザーのブラウザ上で素早く移動して読み込まれる 15 の異なるページに 20 件の結果を配置することをお勧めします。ユーザーは、より速い応答時間を速度として解釈します。もう 1 つのよくある間違いは、ユーザーがページにアクセスするたびにページを動的に作成してしまうことです。これにより、サイトが常に最新の状態に保たれますが、ユーザー数が増加すると、PHP はこれに耐えられなくなります。頻繁に使用されるページはキャッシュする必要があります。キャッシュによりアプリケーションが高速になり、サーバーの負荷が軽減されます。

コードが高速に実行されることを確認してください。待つのが好きな人はいません。

まとめ
このシリーズの最初の記事では、堅牢なコードを書くために実際に何が必要かを学びました。 PHP で大規模なアプリケーションを開発することは、しっかり勉強すればまったく難しいことではありません。実際、PHP で書かれた多くのアプリケーションは簡単に開発されています。同時に、陥りやすい罠に注意することも重要です。計画を立て、物事を小さなタスクに分割し、それらを正しく実行する限り、邪魔になるものはほとんどありません。

次の記事では、変数と関数を効率的に使用する方法を学びます。さらに、PHP で変数と関数を使って魔法を実行する方法も紹介します。この記事で説明する主な内容を計画しました。次回の記事以降、これらについて 1 つずつ説明します (場合によってはスキップすることもあります)。それではまた。



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

なぜ私のコードはAPIによってデータを返しているのですか?この問題を解決する方法は? なぜ私のコードはAPIによってデータを返しているのですか?この問題を解決する方法は? Apr 01, 2025 pm 08:09 PM

なぜ私のコードはAPIによってデータを返しているのですか?プログラミングでは、APIが呼び出すときにヌル値を返すという問題に遭遇することがよくあります。

Debianログを介してシステムのパフォーマンスを監視する方法 Debianログを介してシステムのパフォーマンスを監視する方法 Apr 02, 2025 am 08:00 AM

Debianシステムログ監視のマスターは、効率的な動作とメンテナンスの鍵です。システムの動作条件をタイムリーに理解し、障害をすばやく見つけ、システムのパフォーマンスを最適化するのに役立ちます。この記事では、一般的に使用されるいくつかの監視方法とツールを紹介します。 SysStat Toolkitを使用したシステムリソースの監視SysStat Toolkitは、CPUロード、メモリ使用量、ディスクI/O、ネットワークスループットなど、さまざまなシステムリソースメトリックを収集、分析、レポートするための一連の強力なコマンドラインツールを提供します。 MPSTAT:マルチコアCPUの統計。ピドスタ

Windowsシステムログを効率的に読み取り、ここ数日から情報のみを取得する方法は? Windowsシステムログを効率的に読み取り、ここ数日から情報のみを取得する方法は? Apr 01, 2025 pm 11:21 PM

Windowsシステムログの効率的な読み取り:Pythonを使用してWindowsシステムログファイル(.EVTX)を処理する場合、EVTXファイルを逆転させます。

マルチスレッドをC言語で実装する4つの方法 マルチスレッドをC言語で実装する4つの方法 Apr 03, 2025 pm 03:00 PM

言語のマルチスレッドは、プログラムの効率を大幅に改善できます。 C言語でマルチスレッドを実装する4つの主な方法があります。独立したプロセスを作成します。独立して実行される複数のプロセスを作成します。各プロセスには独自のメモリスペースがあります。擬似マルチスレッド:同じメモリ空間を共有して交互に実行するプロセスで複数の実行ストリームを作成します。マルチスレッドライブラリ:pthreadsなどのマルチスレッドライブラリを使用して、スレッドを作成および管理し、リッチスレッド操作機能を提供します。 Coroutine:タスクを小さなサブタスクに分割し、順番に実行する軽量のマルチスレッド実装。

Windowsの下のpython .whlファイルをどこからダウンロードしますか? Windowsの下のpython .whlファイルをどこからダウンロードしますか? Apr 01, 2025 pm 08:18 PM

Pythonバイナリライブラリ(.whl)のダウンロードメソッドは、Windowsシステムに特定のライブラリをインストールする際に多くのPython開発者が遭遇する困難を調査します。一般的な解決策...

See all articles