PHP のプロキシ モード (フォワード プロキシとリバース プロキシ) について話しましょう。

青灯夜游
リリース: 2023-04-10 11:06:02
転載
4148 人が閲覧しました

前の記事「 PHP の責任連鎖モデルについての簡単な話 」では、PHP の責任連鎖モデルについて紹介しましたが、この記事では、PHP デザイン パターンにおけるエージェンシー モデルについて理解します。

PHP のプロキシ モード (フォワード プロキシとリバース プロキシ) について話しましょう。

代理店という職業は、中国では不動産ブローカー、保険ブローカーという別名があり、実際、海外では不動産エージェント、保険代理店と呼ばれています。名前が示すように、これらは私たちのほとんどにとってなじみのない専門分野での仕事を処理するのに役立ちます。プロキシモードについても同様ですが、同時にフォワードプロキシとリバースプロキシについても簡単に紹介します。

#Gof クラス図と説明

#GoF 定義: このオブジェクトへのアクセスを制御するために、他のオブジェクトにプロキシを提供します#GoF クラス図

##コードの実装PHP のプロキシ モード (フォワード プロキシとリバース プロキシ) について話しましょう。

interface Subject
{
    public function Request();
}

class RealSubject implements Subject
{
    function Request()
    {
        echo "真实的操作", PHP_EOL;
    }
}

class Proxy implements Subject
{
    private $realSubject;

    public function __construct()
    {
        $this->realSubject = new RealSubject();
    }

    public function Request()
    {
        echo "代理的操作", PHP_EOL;
        $this->realSubject->Request();
    }
}

$proxy = new Proxy();
$proxy->Request();
ログイン後にコピー

の実装プロキシ モードは実際には非常にシンプルです。うっかり使用してしまうことがよくあります。

プロキシ モードとデコレータやアダプタの違いに注意してください。また、テンプレート メソッドのパターンもよく似ています。
  • Decorator、一般にオブジェクトを装飾し、メソッドの動作が増加し、主にオブジェクトを変更します。
  • Adapter、一般にメソッドの動作が変更され、目的はインターフェイスの統一性を維持することです。ただし、別の実装を取得します
  • テンプレート メソッド パターンについては後で説明します。ここで知っている限り、テンプレート メソッドは抽象クラスのサブクラスを呼び出すメソッドを結合するものです。
  • プロキシ モードにはいくつかの形式があります: リモート プロキシ (例: サードパーティ インターフェイス SDK)、仮想エージェント (例: 画像の非同期ロード)、保護エージェントとインテリジェント ガイダンス (例: 権限の保護)、および最も一般的に実装されるエージェント私たちのコードは、実際には、実際のクラスの操作をエージェント クラスに置き換えることを目的としています
  • **
完全なコード: https://github.com/zhangyue0503/ designpatterns-php/blob/master/12.proxy/source/proxy.php

SMS 機能を停止できません。今回はシンプルなプロキシ モードで前後のプロンプトを追加します。

SMS 送信クラス図

完全なソース コード: https://github.com/zhangyue0503/designpatterns- php /blob/master/12.proxy/source/proxy-msg.phpPHP のプロキシ モード (フォワード プロキシとリバース プロキシ) について話しましょう。

<?php

interface SendMessage
{
    public function Send();
}

class RealSendMessage implements SendMessage
{
    public function Send()
    {
        echo &#39;短信发送中...&#39;, PHP_EOL;
    }
}

class ProxySendMessage implements SendMessage
{
    private $realSendMessage;

    public function __construct($realSendMessage)
    {
        $this->realSendMessage = $realSendMessage;
    }

    public function Send()
    {
        echo &#39;短信开始发送&#39;, PHP_EOL;
        $this->realSendMessage->Send();
        echo &#39;短信结束发送&#39;, PHP_EOL;
    }
}

$sendMessage = new ProxySendMessage(new RealSendMessage());
$sendMessage->Send();
ログイン後にコピー

手順

この例は非常に簡単です。はまだ通常のプロキシ実装です。ここでは、フォワード プロキシとリバース プロキシについて説明します。

通常、科学的インターネット アクセス (ファン強) と呼ばれるものは、フォワード プロキシです。インターネットにアクセスするには、ソフトウェアを使用するか、プロキシ ゲートウェイを自分で設定します。実際、私たちは「リクエストが指定されたゲートウェイに送信され、このゲートウェイが私たちに代わって他の Web サイトにアクセスします。私たちが指定および選択したこの種類のプロキシがフォワード プロキシです。
  • ほとんどの PHPer は比較的よく知っています」結局のところ、現在では Nginx が Apache に代わって PHP の標準構成となっています。私たちが Web サイトにアクセスするとき、特定のパスやドメイン名がこのサーバー上にあるとは限りません。それらは、サーバー上で他のサーバーや他の人のサイトに直接プロキシされます。 Webサイトを閲覧している私たちにはわかりませんが、このように知らず知らずのうちにプロキシされている状況がリバースプロキシなのですが、一般的にサービスのバックエンド運用や保守には必須の知識です!
  • 元のアドレス: https://juejin.cn/post/6844903959988011016
著者: ハードコア プロジェクト マネージャー

推奨学習: "

PHP ビデオ チュートリアル

"

以上がPHP のプロキシ モード (フォワード プロキシとリバース プロキシ) について話しましょう。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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