您好,登錄后才能下訂單哦!
本篇內容介紹了“PHP中的代理模式是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
代理人這個職業在中國有另外一個稱呼,房產經濟人、保險經濟人,其實這個職業在國外都是叫做房產代理或者保險代理。顧名思義,就是由他們來幫我們處理這些對我們大部分人來說都比較生疏的專業領域的工作。代理模式也是一樣的道理,同時,在這篇文章中還會簡單的介紹正向代理和反向代理是怎么回事。
GoF定義:為其它對象提供一種代理以控制對這個對象的訪問
GoF類圖
代碼實現
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();
代理模式的實現其實非常簡單,或許你在不經意間經常會用到
請注意代理模式與裝飾器、適配器的區別,另外,模板方法模式也和它很像
裝飾器,一般是對對象進行裝飾,其中的方法行為會有增加,以修飾對象為主
適配器,一般會改變方法行為,目的是保持接口的統一但得到不同的實現
模板方法模式,我們后面會講,這里只要知道,模板方法是在抽象類中去組合調用子類的方法
代理模式有幾種形式:遠程代理(例如:第三方接口SDK)、虛代理(例如:異步加載圖片)、保護代理&智能指引(例如:權限保護),而我們代碼實現的最普通的代理,其實就是讓代理類來代替真實類的操作
**
完整代碼:https://github.com/zhangyue0503/designpatterns-php/blob/master/12.proxy/source/proxy.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 '短信發送中...', 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();
說明
例子非常簡單,還是普通代理的實現,這里我們講下正向代理和反向代理
通常我們所說的科學上網(fanqiang),就是正向代理,由我們使用軟件或者自己配置代理網關上網,實際就是我們把請求發送到指定的網關,再由這個網關代替我們去訪問其他網站,這種由我們指定選擇的代理就是正向代理
PHPer們大多還是比較清楚反向代理的,畢竟現在Nginx已經代替Apache成為了PHP標配了。當我們訪問一個網站的時候,某些路徑或者域名并不一定是在這臺服務器上,他們在服務器上直接代理到了其他的服務器甚至是別人家的站點。對于這個我們這些瀏覽網站的人是不知道的,這種我們不知道就被莫名其妙代理了的情況就是反向代理,一般在服務后臺運維中是必備知識!
“PHP中的代理模式是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。