スリムフレームワークミドルウェア:強力なPHPマイクロアプリケーションの構築
Slimは強力なPHP Miniフレームワークであり、ミドルウェア機能により、アプリケーションでの認証やキャッシュなど、さまざまなフィルタースタイルのサービスを実装できます。ミドルウェアはアプリケーションをカプセル化し、アプリケーションの環境に影響を与え、リクエストと応答オブジェクトに影響を与える可能性があります。
キーポイント:
- Slimのミドルウェアは、認証やキャッシュなどのさまざまなフィルタースタイルのサービスを実装できる強力な機能です。ミドルウェアはアプリケーションをカプセル化し、アプリケーションの環境、リクエスト、および応答オブジェクトに影響を与える可能性があります。
- メソッドを使用して、Slimアプリケーションにミドルウェアを登録します。複数のミドルウェアは、後続の呼び出しが
add()
メソッドへの呼び出しによって登録されます。新しいミドルウェアが以前に追加されたミドルウェアを囲むため、ミドルウェアは逆の順序で追加する必要があります。ミドルウェアの構成は、通常、サービスコンストラクターを介して行われます。add()
SlimMiddleware
メソッドをオーバーライドする必要があります。この方法はミドルウェアのエントリポイントであり、そこから戻る(実行プロセスを中断する)か、次のレイヤーを呼び出すことができます。ミドルウェアは、応答のヘッダーと本体を操作できます。 call()
Slimのスリムミドルウェアの理解
スリムドキュメントは、タマネギへのスリムなアプリケーションをたとえています。タマネギの各層はミドルウェアです。これは適切な比phorです。それをよりよく理解するために、認証とキャッシュを使用するアプリケーションを書いていると仮定しましょう。私たちのアーキテクチャは次のようになるかもしれません:
ミドルウェアの実装
カスタムミドルウェアを実装する方法を理解するには、上記のキャッシュミドルウェアとして使用できるコードを見てみましょう。実際、基本的なスリムミドルウェアコンポーネントを実装する要件はほとんどありません。クラスを拡張し、メソッドをオーバーライドするクラスを作成するだけです。ミドルウェアのエントリポイントは、このSlimMiddleware
メソッドであり、そこから戻る(実行プロセスを中断する)か、次のレイヤーを呼び出すことができます。 call()
<?php namespace MyMiddleware; class Cache extends SlimMiddleware { protected $db; public function __construct(PDO $db) { $this->db = $db; } public function call() { $key = $this->app->request()->getResourceUri(); $rsp = $this->app->response(); $data = $this->fetch($key); if ($data) { // 缓存命中...返回缓存的内容 $rsp["Content-Type"] = $data["content_type"]; $rsp->body($data["body"]); return; } // 缓存未命中...继续生成页面 $this->next->call(); if ($rsp->status() == 200) { // 缓存结果以供将来查找 $this->save($key, $rsp["Content-Type"], $rsp->body()); } } protected function fetch($key) { $query = "SELECT content_type, body FROM cache WHERE key = " . $this->db->quote($key); $result = $this->db->query($query); $row = $result->fetch(PDO::FETCH_ASSOC); $result->closeCursor(); return $row; } protected function save($key, $contentType, $body) { $query = sprintf("INSERT INTO cache (key, content_type, body) VALUES (%s, %s, %s)", $this->db->quote($key), $this->db->quote($contentType), $this->db->quote($body) ); $this->db->query($query); } }
call()
メソッド最初に、コンテンツがキャッシュで使用できるかどうかを確認します。もしそうなら、それは応答のContent-Type
ヘッダーとボディを設定してから戻り、パイプラインを短縮します。キャッシュが逃した場合は、$this->next->call()
に電話して次のミドルウェアレイヤーを呼び出します。プロセスが他のミドルウェア呼び出しからこの時点に戻ると、要求ステータスが迅速にチェックされ、将来の検索のために関連するデータがキャッシュされます。このクラスはSlimのクラスを拡張しているため、SlimアプリケーションのインスタンスにMiddleware
を介してアクセスできるため、応答と要求オブジェクトに間接的にアクセスできます。応答を配列として扱うことにより、応答のヘッダーに影響を与え、その$this->app
メソッドを介して応答の本体に影響を与えることができます。 body()
およびfetch()
メソッドは保護されたヘルパーメソッドであり、データベースクエリをラップしてコンテンツを見つけて持続するだけです。例を完了するためだけにここにそれらを含めました。列save()
、cache
、key
を備えたcontent_type
という名前のテーブルがあると想定しています。ニーズに応じて、持続メカニズムは異なる場合があります。また、(簡単にするために)有効期限が切れたキャッシュはここには示されていませんが、簡単に自分でマージできます。 body
ミドルウェアの登録と構成
をラップします。 ミドルウェアは、スリムアプリケーションのあらゆる側面を実装するためのエレガントなソリューションであることがわかりました。この記事では、ミドルウェアアーキテクチャがどのように機能し、独自のミドルウェアを実装するために必要なことを説明します。 CSRF保護やHTTP認証などの基本的なミドルウェアの例を備えた小さな追加リポジトリがあります。ここでこの例をリファクタリングし、プルリクエストを送信したので、有用なミドルウェアサービスを書いた場合、他の人もそれから利益を得られるようにプロジェクトに送信することを検討してみませんか? (フォトリアからの写真) (以下はFAQであり、元のコンテンツに従って調整および補足されており、いくつかの重複したコンテンツが合理化されています) faqs
Slim Middlewareは、HTTPリクエストと応答を操作できるスリムフレームワークの強力なツールです。スリムアプリケーションの前後にコードを実行する方法を提供して、着信要求または発信応答を変更する方法を提供するため、重要です。これは、認証、キャッシュ、ロギングなどのさまざまな目的に使用できます。
を受信すると呼ばれるメソッドが必要です。 メソッドは、リクエストと応答を操作できる場所です。
メソッドを呼び出すことによって行われます。これにより、特定のルートのみに影響を与えるミドルウェアを使用できます。
ミドルウェアを使用してスリムでエラー処理を実行するにはどうすればよいですか? ミドルウェアを使用してスリムでユーザーを認証できますか? はい、ミドルウェアはスリムでの認証によく使用されます。これは、有効なセッションまたはミドルウェアのトークンをチェックして実行でき、ユーザーが認証されていない場合はエラー応答を返します。 ミドルウェアを使用してスリムにログインする方法は? ログファイルへのリクエストと応答に関する情報を記述することにより、ミドルウェアをロギングに使用できます。これは、アプリケーションのデバッグや監視に非常に役立ちます。 サードパーティのミドルウェアをスリムで使用できますか? はい、Slimはサードパーティのミドルウェアをサポートしています。これは、自分のミドルウェアのようにアプリケーションに追加できます。これにより、既存のミドルウェアを活用して一般的なタスクを完了することができます。 スリムミドルウェアをテストする方法は? スリムミドルウェアのテストには、モックリクエストと応答を作成し、ミドルウェアに渡すことが含まれます。その後、リクエストや応答の変更や例外のスローなど、ミドルウェアが予想どおりに動作することを主張できます。 add()
<?php require_once "../vendor/autoload.php";
$app = new SlimSlim();
$app->add(new MyMiddlewareCache($db));
メソッドから登録できます。新しいミドルウェアは以前に追加されたミドルウェアを囲むため、これはコールの反対の順序で追加する必要があることを意味します。 add()
上記の例では、<?php $app = new SlimSlim();
$app->add(new MyMiddlewareCache($db));
$app->add(new MyMiddlewareAuth($db));
// ...
ミドルウェアはCache
が呼び出されると、実行プロセスは上記の図に示されているものと類似しており、最初に認証ミドルウェアに入力し、次にルートまでずっと作業します。ミドルウェアの構成は、通常、サービスコンストラクターを介して行われます。この例では、キャッシュテーブルにアクセスできるようにアクティブなデータベース接続を渡すだけですが、動作をカスタマイズするために必要な情報を受け入れるためにクラスを書くことができます。たとえば、コンポーネントは、Auth
およびCache
メソッドを公開するハンドラーオブジェクトを受け入れることができます。コンポーネント構成の一部として機能を提供します。 $app->run()
fetch()
save()
結論
MiddlewareInterface
process()
ServerRequestInterface
RequestHandlerInterface
process()
スリムアプリケーションにミドルウェアを追加する方法は? add()
スリムの特定のルートにミドルウェアを使用できますか? Route
App
add()
グローバルミドルウェアとルーティングミドルウェアの違いは何ですか?
以上がPHPマスター|スリムなミドルウェアを使用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

負荷分散はセッション管理に影響しますが、セッションの複製、セッションの粘着性、集中セッションストレージで解決できます。 1。セッションレプリケーションサーバー間のセッションデータをコピーします。 2。セッションスティンネスは、ユーザーリクエストを同じサーバーに指示します。 3.集中セッションストレージは、Redisなどの独立したサーバーを使用してセッションデータを保存してデータ共有を確保します。

SESSIONLOCKINGISATECHNIQUESTOESUREAUSER'SSESSIONREMAINSEXCLUSIVETOONEUSATIME.ITISCRUCIALFORPREVENTINGDATACORTIONANDSECURITYBREACHESINMULTI-USERAPPLICATIONS.SESSIONLOCKINGISISIMPLEMENTEDUSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGROCKINGSMECHANISMなど

PHPセッションの代替品には、Cookie、トークンベースの認証、データベースベースのセッション、Redis/Memcachedが含まれます。 1.Cookiesは、クライアントにデータを保存することによりセッションを管理します。 2.トークンベースの認証はトークンを使用してユーザーを検証します。これは非常に安全ですが、追加のロジックが必要です。 3.Databaseベースのセッションは、データベースにデータを保存します。これは、スケーラビリティが良好ですが、パフォーマンスに影響を与える可能性があります。 4. Redis/Memcachedは分散キャッシュを使用してパフォーマンスとスケーラビリティを向上させますが、追加のマッチングが必要です

SessionHijackingとは、ユーザーのSessionIDを取得してユーザーになりすましている攻撃者を指します。予防方法には、次のものが含まれます。1)HTTPSを使用した通信の暗号化。 2)SessionIDのソースの検証。 3)安全なSessionID生成アルゴリズムの使用。 4)SessionIDを定期的に更新します。

この記事では、PHPについて説明し、その完全なフォーム、Web開発での主要な使用、PythonとJavaとの比較、および初心者の学習のしやすさについて説明します。

PHPは、$ \ _ postおよび$ \ _を使用してフォームデータを処理し、検証、消毒、安全なデータベースインタラクションを通じてセキュリティを確保します。

この記事では、PHPとASP.NETを比較して、大規模なWebアプリケーション、パフォーマンスの違い、セキュリティ機能への適合性に焦点を当てています。どちらも大規模なプロジェクトでは実行可能ですが、PHPはオープンソースであり、プラットフォームに依存しませんが、ASP.NET、

PHPの症例感度は変化します:関数は鈍感であり、変数とクラスは感度があります。ベストプラクティスには、一貫した命名と、比較のためにケース非感受性関数を使用することが含まれます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

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

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

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

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

ホットトピック









