国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

PHP開發APP接口(四):單例模式

2019-11-06 08:19:42
字體:
來源:轉載
供稿:網友

1. 單例模式連接數據庫

單例模式

設計模式中最簡單的形式之一。這一模式的目的是使得類的一個對象成為系統中的唯一實例。要實現這一點,可以從客戶端對其進行實例化開始。因此需要用一種只允許生成對象類的唯一實例的機制,“阻止”所有想要生成對象的訪問。使用工廠方法來限制實例化過程。這個方法應該是靜態方法(類方法),因為讓類的實例去生成另一個唯一實例毫無意義。

動機

對于系統中的某些類來說,只有一個實例很重要,例如,一個系統中可以存在多個打印任務,但是只能有一個正在工作的任務;一個系統只能有一個窗口管理器或文件系統;一個系統只能有一個計時工具或ID(序號)生成器。如在Windows中就只能打開一個任務管理器。如果不使用機制對窗口對象進行唯一化,將彈出多個窗口,如果這些窗口顯示的內容完全一致,則是重復對象,浪費內存資源;如果這些窗口顯示的內容不一致,則意味著在某一瞬間系統有多個狀態,與實際不符,也會給用戶帶來誤解,不知道哪一個才是真實的狀態。因此有時確保系統中某個對象的唯一性即一個類只能有一個實例非常重要。 php設計模式-單例模式

單例模式三大原則

構造函數需要標記為非 public(防止外部使用 new 操作符創建對象),單例類不能在其他類中實例化,只能被其自身實例化;擁有一個保存類的實例的靜態成員變量 $_instance;擁有一個訪問這個實例的公共的靜態方法

實例代碼

class Db { static PRivate $_instance; // 保存類的實例 static private $_connectSource; // 連接的資源 private $_dbConfig = array( 'host' => '192.168.2.110', 'user' => 'root', 'passWord' => 'root', 'database' => 'muke', ); // 構造函數需要設置成私有,防止被其他類實例化 private function __construct() { } // 訪問實例的公共方法 static public function getInstance() { // 是否實例,如果沒有則實例化類 if (!self::$_instance instanceof self) { self::$_instance = new self(); } return self::$_instance; } public function connect() { if(!self::$_connectSource) { self::$_connectSource = MySQL_connect($this->_dbConfig['host'], $this->_dbConfig['user'], $this->_dbConfig['password']); if(!self::$_connectSource) { die('mysql connect error'. mysql_error()); } mysql_select_db($this->_dbConfig['database'], self::$_connectSource); mysql_query("set names UTF8", self::$_connectSource); return self::$_connectSource; } }}$connect = Db::getInstance()->connect();$sql = "select * from mk_user";$result = mysql_query($sql, $connect);echo mysql_fetch_row($result);var_dump($result);
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新疆| 米易县| 蓝田县| 西华县| 肃南| 奇台县| 铜梁县| 乌苏市| 汉川市| 宝兴县| 定安县| 虹口区| 嘉峪关市| 合作市| 德惠市| 普安县| 南通市| 贺州市| 司法| 济宁市| 天气| 吴桥县| 五常市| 启东市| 科技| 凤山市| 正蓝旗| 敦化市| 无极县| 鹤岗市| 汾西县| 屏东县| 商河县| 沙河市| 华蓥市| 和田市| 体育| 宝鸡市| 松潘县| 凤庆县| 六盘水市|