本文是關於對PHP單例模式理解,有興趣的朋友來了解一下吧!
為什麼會使用單例模式?
在網路上查了一下資料,記錄一下也方便自己以後查看。
單例模式顧名思義,只有一個實例。可以節約記憶體和資源,主要是php在跟資料庫打交道的時候,每new一次物件都會消耗一定的資源。
眾所周知,PHP語言是一種解釋型的腳本語言,這種運作機制使得每個PHP頁面被解釋執行後,所有的相關資源都會被回收。也就是說,PHP在語言層級上沒有辦法讓某個物件常駐內存,這和asp.net、Java等編譯型是不同的,例如在Java中單例會一直存在於整個應用程式的生命週期裡,變數是跨頁面層級
的,真正可以做到這個實例在應用程式生命週期中的唯一性。然而在PHP中,所有的變數無論是全域變數或類別的靜態成員,都是頁面層級的,每次頁面被執行時,都會重新建立新的對象,都會在頁面執行完畢後被清空,這樣似乎PHP單例模式就沒有什麼意義了,所以PHP單例模式我覺得只是針對單次頁面
級請求時出現多個應用場景並需要共享同一物件資源時是非常有意義的。
話不多說,先上程式碼
<span style="font-size: 14px;"><span style="font-size: 12px;"><?php</span><br/><br/><span style="font-size: 12px;">class User</span><br/><span style="font-size: 12px;">{</span><br/><span style="font-size: 12px;"> /*</span><br/><span style="font-size: 12px;"> * 1、创建一个存放对象的私有化静态变量</span><br/><span style="font-size: 12px;"> * 2、私有化克隆方法</span><br/><span style="font-size: 12px;"> * 3、私有化构造方法</span><br/><span style="font-size: 12px;"> * 4、创建实例化对象的唯一入口</span><br/><span style="font-size: 12px;"> *</span><br/><span style="font-size: 12px;"> * **/</span><br/><span style="font-size: 12px;"> private static $_instance = '';</span><br/><span style="font-size: 12px;"> private function __clone(){}</span><br/><span style="font-size: 12px;"> private function __construct(){}</span><br/><span style="font-size: 12px;"> static public function getInstance()</span><br/><span style="font-size: 12px;"> {</span><br/><span style="font-size: 12px;"> if(is_null(self::$_instance) || isset(self::$_instance)){</span><br/><span style="font-size: 12px;"> self::$_instance = new User();</span><br/><span style="font-size: 12px;"> }</span><br/><span style="font-size: 12px;"> return self::$_instance;</span><br/><span style="font-size: 12px;"> }</span><br/><span style="font-size: 12px;"> public function getIp()</span><br/><span style="font-size: 12px;"> {</span><br/><span style="font-size: 12px;"> return $_SERVER['SERVER_ADDR'];</span><br/><span style="font-size: 12px;"> }</span><br/><span style="font-size: 12px;">}</span><br/><span style="font-size: 12px;">$op = User::getInstance();</span><br/><span style="font-size: 12px;">echo $op->getIp();</span><br/><br/></span>
相關教學:PHP影片教學
以上是淺談對PHP單例模式的理解以及範例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!