>  기사  >  백엔드 개발  >  PHP의 프록시 모드(정방향 프록시 및 역방향 프록시)에 대해 이야기해 보겠습니다.

PHP의 프록시 모드(정방향 프록시 및 역방향 프록시)에 대해 이야기해 보겠습니다.

青灯夜游
青灯夜游앞으로
2021-07-13 19:16:374150검색

이전 기사 "A Brief Talk on the Responsibility Chain Model in 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

Example

SMS 기능은 중지할 수 없습니다. . 이번에는 간단한 프록시 모드를 사용하여 전후 팁을 추가해 보세요!

SMS 전송 클래스 다이어그램

PHP의 프록시 모드(정방향 프록시 및 역방향 프록시)에 대해 이야기해 보겠습니다.전체 소스 코드: https://github.com/zhangyue0503/designpatterns-php/blob/master/12.proxy/source/proxy-msg.php

<?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();

설명

예제는 매우 간단하며 여전히 일반 프록시의 구현입니다. 여기서는 순방향 프록시와 역방향 프록시에 대해 이야기합니다.

    보통 우리가 과학적 인터넷 액세스(fanqiang)라고 부르는 것은 순방향 프록시입니다. 우리가 직접 인터넷에 액세스하기 위해 소프트웨어를 사용하거나 프록시 게이트웨이를 구성한다는 것은 실제로 요청을 지정된 게이트웨이로 보낸 다음 이 게이트웨이가 우리를 대신하여 다른 웹사이트에 액세스하도록 허용한다는 것을 의미합니다. 대부분의 PHP 사용자는 역방향 프록시에 대해 비교적 명확하게 알고 있습니다. 결국 Nginx는 Apache를 대체하고 PHP의 표준 구성이 되었습니다. 웹사이트를 방문할 때 특정 경로나 도메인 이름이 반드시 이 서버에 있는 것은 아닙니다. 이러한 이름은 서버에서 다른 서버나 다른 사람의 사이트로 직접 프록시됩니다. 웹사이트를 탐색하는 우리는 이것을 모릅니다. 역프록시라는 것을 모르고 설명할 수 없는 상황이 발생합니다. 이는 일반적으로 서비스의 백엔드 운영 및 유지 관리에 필요한 지식입니다!
  • 원본 주소: https://juejin.cn/post/6844903959988011016
  • 저자: Hardcore Project Manager

추천 학습: "

PHP 비디오 튜토리얼

"

위 내용은 PHP의 프록시 모드(정방향 프록시 및 역방향 프록시)에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제