ホームページ > バックエンド開発 > PHPチュートリアル > php laravelリクエスト処理パイプライン(デコレータパターン)

php laravelリクエスト処理パイプライン(デコレータパターン)

angryTom
リリース: 2023-04-07 20:46:02
転載
3436 人が閲覧しました

Laravel のミドルウェアはデコレータ パターンを使用します。たとえば、メンテナンス モード、Cookie 暗号化、オープン セッションなどを確認します。これらの処理には、応答前と応答後の処理があり、デコレータ モードを使用して動的に機能を削減または追加することで、フレームワークのスケーラビリティが大幅に向上します。

php laravelリクエスト処理パイプライン(デコレータパターン)

#次に、デコレータ パターンを使用してセッション実装を維持する簡単な例を示します。

1. デコレータ モードは使用されないため、モジュール (WelcomeController::index メソッド) を変更する必要があります。

class WelcomeController
{
    public function index()
    {
        echo 'session start.', PHP_EOL;
        echo 'hello!', PHP_EOL;
        echo 'session close.', PHP_EOL;
    }
}
ログイン後にコピー

2. デコレータ モードを使用し、$pipeList は実行する必要があるミドルウェア配列を表します。鍵となるのは、array_reduce 関数の使用です。

class WelcomeController
{
    public function index()
    {
        echo 'hello!', PHP_EOL;
    }
}
interface Middleware
{
    public function handle(Closure $next);
}
class Seesion implements Middleware
{
    public function handle(Closure $next)
    {
        echo 'session start.', PHP_EOL;
        $next();
        echo 'session close.', PHP_EOL;
    }
}
$pipeList = [
    "Seesion",
];
 
function _go($step, $className)
{
    return function () use ($step, $className) {
        $o = new $className();
        return $o->handle($step);
    };
}
 
$go = array_reduce($pipeList, '_go', function () {
    return call_user_func([new WelcomeController(), 'index']);
});
$go();
ログイン後にコピー

PHP 関連の知識については、PHP 中国語 Web サイトをご覧ください。

以上がphp laravelリクエスト処理パイプライン(デコレータパターン)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート