《PHP編程:php單例模式的簡單實現方法》要點:
本文介紹了PHP編程:php單例模式的簡單實現方法,希望對您有用。如果有疑問,可以聯系我們。
php單例模式的簡單實現方法PHP實戰
<?php /** * 設計模式之單例模式 * $_instance必須聲明為靜態的私有變量 * 構造函數和析構函數必須聲明為私有,防止外部程序new * 類從而失去單例模式的意義 * getInstance()方法必須設置為公有的,必須調用此方法 * 以返回實例的一個引用 * ::操作符只能訪問靜態變量和靜態函數 * new對象都會消耗內存 * 使用場景:最常用的地方是數據庫連接. * 使用單例模式生成一個對象后, * 該對象可以被其它眾多對象所使用. */ class Example { //保存例實例在此屬性中 private static $_instance; //構造函數聲明為private,防止直接創建對象 private function __construct() { echo 'I am Construceted'; } //單例方法 public static function singleton() { if(!isset(self::$_instance)) { $c=__CLASS__; self::$_instance=new $c; } return self::$_instance; } //阻止用戶復制對象實例 public function __clone() { trigger_error('Clone is not allow' ,E_USER_ERROR); } function test() { echo("test"); } } // 這個寫法會出錯,因為構造方法被聲明為private $test = new Example; // 下面將得到Example類的單例對象 $test = Example::singleton(); $test->test(); // 復制對象將導致一個E_USER_ERROR. $test_clone = clone $test; ?>
首先我們要知道明確單例模式這個概念,那么什么是單例模式呢?PHP實戰
單例模式顧名思義,就是只有一個實例.PHP實戰
作為對象的創建模式, 單例模式確保某一個類只有一個實例,而且自行實例化并向整個系統提供這個實例,PHP實戰
這個類我們稱之為單例類.PHP實戰
單例模式的要點有三個:PHP實戰
一是某個類只能有一個實例;PHP實戰
二是它必須自行創建這個實例;PHP實戰
三是它必須自行向整個系統提供這個實例.PHP實戰
下面我們討論下為什么要使用PHP單例模式?PHP實戰
多數 人都是從單例模式的字面上的意思來理解它的用途, 認為這是對系統資源的節省, 可以避免重復實例化, 是一種"計劃生育". 而PHP每次執行完頁面都是會從內存中清理掉所有的資源. 因而PHP中的單例實際每次運行都是需要重新實例化的, 這樣就失去了單例重復實例化的意義了. 單單從這個方面來說, PHP的單例的確有點讓各位失望. 但是單例僅僅只有這個功能和應用嗎? 答案是否定的,我們一起來看看.PHP實戰
1. php的應用主要在于數據庫應用, 所以一個應用中會存在大量的數據庫操作, 在使用面向對象的方式開發時(廢話), 如果使用單例模式, 則可以避免大量的new 操作消耗的資源.PHP實戰
2. 如果系統中需要有一個類來全局控制某些配置信息, 那么使用單例模式可以很方便的實現. 這個可以參看zend Framework的FrontController部分.PHP實戰
3. 在一次頁面請求中, 便于進行調試, 因為所有的代碼(例如數據庫操作類db)都集中在一個類中, 我們可以在類中設置鉤子, 輸出日志,從而避免到處var_dump, echo.
PHP實戰
以上這篇php單例模式的簡單實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持維易PHP.PHP實戰
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/6254.html