国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ バックエンド開発 PHPチュートリアル PHPマスター|スリムなミドルウェアを使用します

PHPマスター|スリムなミドルウェアを使用します

Feb 24, 2025 am 09:00 AM

スリムフレームワークミドルウェア:強(qiáng)力なPHPマイクロアプリケーションの構(gòu)築

Slimは強(qiáng)力なPHP Miniフレームワークであり、ミドルウェア機(jī)能により、アプリケーションでの認(rèn)証やキャッシュなど、さまざまなフィルタースタイルのサービスを?qū)g裝できます。ミドルウェアはアプリケーションをカプセル化し、アプリケーションの環(huán)境に影響を與え、リクエストと応答オブジェクトに影響を與える可能性があります。

キーポイント:

  • Slimのミドルウェアは、認(rèn)証やキャッシュなどのさまざまなフィルタースタイルのサービスを?qū)g裝できる強(qiáng)力な機(jī)能です。ミドルウェアはアプリケーションをカプセル化し、アプリケーションの環(huán)境、リクエスト、および応答オブジェクトに影響を與える可能性があります。
  • クラスを拡張するクラスを作成し、SlimMiddlewareメソッドをオーバーライドする必要があります。この方法はミドルウェアのエントリポイントであり、そこから戻る(実行プロセスを中斷する)か、次のレイヤーを呼び出すことができます。ミドルウェアは、応答のヘッダーと本體を操作できます。 call() Slimの
  • メソッドを使用して、Slimアプリケーションにミドルウェアを登録します。複數(shù)のミドルウェアは、後続の呼び出しがadd()メソッドへの呼び出しによって登録されます。新しいミドルウェアが以前に追加されたミドルウェアを囲むため、ミドルウェアは逆の順序で追加する必要があります。ミドルウェアの構(gòu)成は、通常、サービスコンストラクターを介して行われます。 add()

スリムミドルウェアの理解

スリムドキュメントは、タマネギへのスリムなアプリケーションをたとえています。タマネギの各層はミドルウェアです。これは適切な比phorです。それをよりよく理解するために、認(rèn)証とキャッシュを使用するアプリケーションを書いていると仮定しましょう。私たちのアーキテクチャは次のようになるかもしれません:

PHP Master | Working with Slim Middleware

ページコンテンツの生成を擔(dān)當(dāng)するコードは、いくつかのミドルウェアのレイヤーに包まれています。その中で最も重要なのは、認(rèn)証ロジックとキャッシュロジックです。実行プロセスは各レイヤーを通過し、次のレイヤーへのフローを可能にするか、転送されます。最初に、ユーザーが認(rèn)証に合格したかどうかを確認(rèn)します。そうでない場(chǎng)合、プロセスが中斷され、HTTP 401ステータスが返されます。次に、コンテンツのキャッシュコピーを使用できるかどうかを確認(rèn)します。その場(chǎng)合、ページのキャッシュされたコピーを使用してプロセスが中斷されます。プロセスが最終的にページを生成するロジックに到達(dá)するまで、他のミドルウェアレイヤーがある場(chǎng)合があります。ミドルウェアのメソッドが戻ってくると、実行プロセスがそれらを通り抜けます。たとえば、キャッシュミドルウェアの殘りのロジックは、後の検索のためにページの內(nèi)容をキャッシュします。

ミドルウェアの実裝

カスタムミドルウェアを?qū)g裝する方法を理解するには、上記のキャッシュミドルウェアとして使用できるコードを見てみましょう。実際、基本的なスリムミドルウェアコンポーネントを?qū)g裝する要件はほとんどありません。クラスを拡張し、

メソッドをオーバーライドするクラスを作成するだけです。ミドルウェアのエントリポイントは、この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) {
            // 緩存命中...返回緩存的內(nèi)容
            $rsp["Content-Type"] = $data["content_type"];
            $rsp->body($data["body"]);
            return;
        }

        // 緩存未命中...繼續(xù)生成頁面
        $this->next->call();

        if ($rsp->status() == 200) {
            // 緩存結(jié)果以供將來查找
            $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()メソッド最初に、コンテンツがキャッシュで使用できるかどうかを確認(rèn)します。もしそうなら、それは応答のContent-Typeヘッダーとボディを設(shè)定してから戻り、パイプラインを短縮します。キャッシュが逃した場(chǎng)合は、$this->next->call()に電話して次のミドルウェアレイヤーを呼び出します。プロセスが他のミドルウェア呼び出しからこの時(shí)點(diǎn)に戻ると、要求ステータスが迅速にチェックされ、將來の検索のために関連するデータがキャッシュされます。このクラスはSlimのクラスを拡張しているため、SlimアプリケーションのインスタンスにMiddlewareを介してアクセスできるため、応答と要求オブジェクトに間接的にアクセスできます。応答を配列として扱うことにより、応答のヘッダーに影響を與え、その$this->appメソッドを介して応答の本體に影響を與えることができます。 body()およびfetch()メソッドは保護(hù)されたヘルパーメソッドであり、データベースクエリをラップしてコンテンツを見つけて持続するだけです。例を完了するためだけにここにそれらを含めました。列save()、cachekeyを備えたcontent_typeという名前のテーブルがあると想定しています。ニーズに応じて、持続メカニズムは異なる場(chǎng)合があります。また、(簡(jiǎn)単にするために)有効期限が切れたキャッシュはここには示されていませんが、簡(jiǎn)単に自分でマージできます。 body

ミドルウェアの登録と構(gòu)成 メソッドを使用してミドルウェアを登録します。

add()

もちろん、複數(shù)のミドルウェアを後続の呼び出し
<?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が呼び出されると、実行プロセスは上記の図に示されているものと類似しており、最初に認(rèn)証ミドルウェアに入力し、次にルートまでずっと作業(yè)します。ミドルウェアの構(gòu)成は、通常、サービスコンストラクターを介して行われます。この例では、キャッシュテーブルにアクセスできるようにアクティブなデータベース接続を渡すだけですが、動(dòng)作をカスタマイズするために必要な情報(bào)を受け入れるためにクラスを書くことができます。たとえば、コンポーネントは、AuthおよびCacheメソッドを公開するハンドラーオブジェクトを受け入れることができます。コンポーネント構(gòu)成の一部として機(jī)能を提供します。 $app->run() fetch()save()結(jié)論

ミドルウェアは、スリムアプリケーションのあらゆる側(cè)面を?qū)g裝するためのエレガントなソリューションであることがわかりました。この記事では、ミドルウェアアーキテクチャがどのように機(jī)能し、獨(dú)自のミドルウェアを?qū)g裝するために必要なことを説明します。 CSRF保護(hù)やHTTP認(rèn)証などの基本的なミドルウェアの例を備えた小さな追加リポジトリがあります。ここでこの例をリファクタリングし、プルリクエストを送信したので、有用なミドルウェアサービスを書いた場(chǎng)合、他の人もそれから利益を得られるようにプロジェクトに送信することを検討してみませんか?

(フォトリアからの寫真)

(以下はFAQであり、元のコンテンツに従って調(diào)整および補(bǔ)足されており、いくつかの重複したコンテンツが合理化されています)

スリムミドルウェアに関する

faqs

  • スリムミドルウェアとは何ですか?なぜそれが重要なのですか?

    Slim Middlewareは、HTTPリクエストと応答を操作できるスリムフレームワークの強(qiáng)力なツールです。スリムアプリケーションの前後にコードを?qū)g行する方法を提供して、著信要求または発信応答を変更する方法を提供するため、重要です。これは、認(rèn)証、キャッシュ、ロギングなどのさまざまな目的に使用できます。

    を?qū)g裝するクラスを定義することが含まれます。このクラスには、
  • および

    を受信すると呼ばれるメソッドが必要です。 メソッドは、リクエストと応答を操作できる場(chǎng)所です。 MiddlewareInterface process() ServerRequestInterface RequestHandlerInterfaceprocess()スリムアプリケーションにミドルウェアを追加する方法は?

  • メソッドを使用して、スリムアプリケーションにミドルウェアを追加できます。この方法では、ミドルウェアクラスのインスタンスを受信します。ミドルウェアは追加の順序で実行されるため、最後に追加されたミドルウェアは、実行する最初のミドルウェアになります。
  • add()スリムの特定のルートにミドルウェアを使用できますか?

    はい、ミドルウェアはスリムの特定のルートに適用できます。これは、
  • オブジェクトの代わりに
  • オブジェクト上の

    メソッドを呼び出すことによって行われます。これにより、特定のルートのみに影響を與えるミドルウェアを使用できます。 Route Appadd()グローバルミドルウェアとルーティングミドルウェアの違いは何ですか?

    グローバルミドルウェアは、スリムアプリケーションによって処理された各要求に適用され、ルーティングミドルウェアは特定のルートのみに適用されます。これにより、アプリケーションのさまざまな部分に異なるミドルウェアを使用できます。
  • ミドルウェアを使用してスリムでエラー処理を?qū)g行するにはどうすればよいですか?

    ミドルウェアクラスで例外をキャッチすることにより、ミドルウェアを使用してスリムでエラー処理を?qū)g行できます。その後、応答を変更してエラーメッセージを含めるか、ユーザーをエラーページにリダイレクトできます。
  • ミドルウェアを使用してスリムでユーザーを認(rèn)証できますか? はい、ミドルウェアはスリムでの認(rèn)証によく使用されます。これは、有効なセッションまたはミドルウェアのトークンをチェックして実行でき、ユーザーが認(rèn)証されていない場(chǎng)合はエラー応答を返します。

  • ミドルウェアを使用してスリムにログインする方法は? ログファイルへのリクエストと応答に関する情報(bào)を記述することにより、ミドルウェアをロギングに使用できます。これは、アプリケーションのデバッグや監(jiān)視に非常に役立ちます。

  • サードパーティのミドルウェアをスリムで使用できますか? はい、Slimはサードパーティのミドルウェアをサポートしています。これは、自分のミドルウェアのようにアプリケーションに追加できます。これにより、既存のミドルウェアを活用して一般的なタスクを完了することができます。

  • スリムミドルウェアをテストする方法は? スリムミドルウェアのテストには、モックリクエストと応答を作成し、ミドルウェアに渡すことが含まれます。その後、リクエストや応答の変更や例外のスローなど、ミドルウェアが予想どおりに動(dòng)作することを主張できます。

以上がPHPマスター|スリムなミドルウェアを使用しますの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中國(guó)語版

SublimeText3 中國(guó)語版

中國(guó)語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPベースのAPIをバージョン化するためのベストプラクティスは何ですか? PHPベースのAPIをバージョン化するためのベストプラクティスは何ですか? Jun 14, 2025 am 12:27 AM

Toversionaphp Basedificefectivivivity、useurl Basedversioning forclarity-andeaseaseasedease、depateversionedcodetoavoidconflicts、deprecateoldversions withclearcommunication、andconsider-customheadersally whendary.starttheversionionintheurl(e.g。、/api/v

PHPに認(rèn)証と承認(rèn)を?qū)g裝するにはどうすればよいですか? PHPに認(rèn)証と承認(rèn)を?qū)g裝するにはどうすればよいですか? Jun 20, 2025 am 01:03 AM

tosecurelyhandLeauthenticationAndauthorizationInizationInization、followTheSteps:1.LwayShashPasswordswithPassword_hash()andverifyusingpassword_verify()、usepreparedStatementStatementStatementStatementStatementStain、andstoreUserdatain $ _SessionAfterlogin.2.implementRementRementRementRementRementRementRementRole

PHPにおける手続き型とオブジェクト指向のプログラミングパラダイムの違いは何ですか? PHPにおける手続き型とオブジェクト指向のプログラミングパラダイムの違いは何ですか? Jun 14, 2025 am 12:25 AM

ProceduralAndObject-OrientedProgramming(OOP)InphpdifferSifically-datability、andDatahandling.1.proceduralprogramsessusessuseSideSized funized、surtableforsmallscript.2.ooporganizescodeIntoclassesandobjects、ModelingReal-worden

PHPの弱い參照(WeakMap)とは何ですか? PHPの弱い參照(WeakMap)とは何ですか? Jun 14, 2025 am 12:25 AM

phpdoesnothaveabuiltinweakmapbutofferswutreferenceforsimilarfunctionality.1.weakreferenceallowsholdingReferences withoutpreventinggarbagecollectrection.2.itisusfulfurcaching、eventlisteners、およびmetadatawithectingovecting objectinimulatea

PHPでファイルアップロードを安全に処理するにはどうすればよいですか? PHPでファイルアップロードを安全に処理するにはどうすればよいですか? Jun 19, 2025 am 01:05 AM

PHPでファイルアップロードを安全に処理するために、コアはファイルタイプを確認(rèn)し、ファイルの名前を変更し、権限を制限することです。 1。Finfo_File()を使用して実際のMIMEタイプを確認(rèn)し、Image/JPEGなどの特定のタイプのみが許可されます。 2。uniqid()を使用してランダムファイル名を生成し、非webルートディレクトリに保存します。 3. PHP.iniおよびHTMLフォームを介してファイルサイズを制限し、ディレクトリ権限を0755に設(shè)定します。 4. Clamavを使用してマルウェアをスキャンしてセキュリティを強(qiáng)化します。これらの手順は、セキュリティの脆弱性を効果的に防止し、ファイルのアップロードプロセスが安全で信頼性が高いことを確認(rèn)します。

PHPの==(ゆるい比較)と===(厳密な比較)の違いは何ですか? PHPの==(ゆるい比較)と===(厳密な比較)の違いは何ですか? Jun 19, 2025 am 01:07 AM

PHPでは、==と==の主な違いは、タイプチェックの厳格さです。 ==タイプ変換は比較の前に実行されます。たとえば、5 == "5"はtrueを返します。===リクエストは、trueが返される前に値とタイプが同じであることを要求します。たとえば、5 === "5"はfalseを返します。使用シナリオでは、===はより安全で、最初に使用する必要があります。==は、タイプ変換が必要な場(chǎng)合にのみ使用されます。

PHPのNOSQLデータベース(Mongodb、Redisなど)とどのように対話できますか? PHPのNOSQLデータベース(Mongodb、Redisなど)とどのように対話できますか? Jun 19, 2025 am 01:07 AM

はい、PHPは、特定の拡張機(jī)能またはライブラリを使用して、MongoDBやRedisなどのNOSQLデータベースと対話できます。まず、MongoDBPHPドライバー(PECLまたはComposerを介してインストール)を使用して、クライアントインスタンスを作成し、データベースとコレクションを操作し、挿入、クエリ、集約、その他の操作をサポートします。第二に、PredisライブラリまたはPhpredis拡張機(jī)能を使用してRedisに接続し、キー価値設(shè)定と取得を?qū)g行し、高性能シナリオにPhpredisを推奨しますが、Predisは迅速な展開に便利です。どちらも生産環(huán)境に適しており、十分に文書化されています。

PHP(、 - 、 *、 /、%)で算術(shù)操作を?qū)g行するにはどうすればよいですか? PHP(、 - 、 *、 /、%)で算術(shù)操作を?qū)g行するにはどうすればよいですか? Jun 19, 2025 pm 05:13 PM

PHPで基本的な數(shù)學(xué)操作を使用する方法は次のとおりです。1。追加標(biāo)識(shí)は、整數(shù)と浮動(dòng)小數(shù)點(diǎn)數(shù)をサポートし、変數(shù)にも使用できます。文字列番號(hào)は自動(dòng)的に変換されますが、依存関係には推奨されません。 2。減算標(biāo)識(shí)の使用 - 標(biāo)識(shí)、変數(shù)は同じであり、タイプ変換も適用されます。 3.乗算サインは、數(shù)字や類似の文字列に適した標(biāo)識(shí)を使用します。 4.分割はゼロで割らないようにする必要がある分割 /標(biāo)識(shí)を使用し、結(jié)果は浮動(dòng)小數(shù)點(diǎn)數(shù)である可能性があることに注意してください。 5.モジュラス標(biāo)識(shí)を採(cǎi)取することは、奇妙な數(shù)と偶數(shù)を判斷するために使用でき、負(fù)の數(shù)を処理する場(chǎng)合、殘りの兆候は配當(dāng)と一致しています。これらの演算子を正しく使用するための鍵は、データ型が明確であり、境界の狀況がうまく処理されるようにすることです。

See all articles