In the previous article " A Brief Talk on the Responsibility Chain Model in PHP" we introduced the responsibility chain model in PHP. This article will take you to understand the agency model in the PHP design pattern.
The profession of agent has another name in China, real estate broker and insurance broker. In fact, this profession is called real estate agent or insurance agent abroad. As the name suggests, they help us handle work in these professional fields that are unfamiliar to most of us. The same is true for the proxy mode. At the same time, this article will also briefly introduce forward proxy and reverse proxy.
GoF definition: Provide a proxy for other objects to control access to this object
GoF class diagram
##Code implementation
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();
Full code: https://github.com/zhangyue0503/designpatterns-php/blob/master/12.proxy/source/proxy.php
SMS sending class diagram
Full source code: 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 '短信发送中...', PHP_EOL; } } class ProxySendMessage implements SendMessage { private $realSendMessage; public function __construct($realSendMessage) { $this->realSendMessage = $realSendMessage; } public function Send() { echo '短信开始发送', PHP_EOL; $this->realSendMessage->Send(); echo '短信结束发送', PHP_EOL; } } $sendMessage = new ProxySendMessage(new RealSendMessage()); $sendMessage->Send();Copy after loginInstructions
The example is very simple, it is still a normal proxy Implementation, here we talk about forward proxy and reverse proxy
- Usually what we call scientific Internet access (fanqiang) is forward proxy. We use software or configure the proxy gateway ourselves to access the Internet. In fact, we use The request is sent to the designated gateway, and then this gateway visits other websites on our behalf. This kind of proxy specified and selected by us is the forward proxy.
- Most PHPers are relatively aware of reverse proxy. After all, Nginx is now It has replaced Apache and become the standard configuration of PHP. When we visit a website, certain paths or domain names are not necessarily on this server. They are directly proxied on the server to other servers or even other people's sites. Those of us who browse the website don’t know this. This kind of situation where we are inexplicably proxyed without knowing it is a reverse proxy. Generally, it is a necessary knowledge in the backend operation and maintenance of services!
Original address: https://juejin.cn/post/6844903959988011016Author: Hardcore Project ManagerRecommended learning: "PHP Video Tutorial"
The above is the detailed content of Let's talk about the proxy mode in PHP (forward proxy and reverse proxy). For more information, please follow other related articles on the PHP Chinese website!