某些應用程式資源是獨占的,因為有且隻有一個此類型的資源。例如,通過資料庫句柄到資料庫的連接配接是獨占的。您希望在應用程式中共享資料庫句柄,因為在保持連接配接打開或關閉時,它是一種開銷,在擷取單個頁面的過程中更是如此。
單例模式可以滿足此要求。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<code><em deep=</code><code>"8"</code><code>><?php</code>
<code>class</code> <code>Mysql{</code>
<code>//定義一個私有的靜态變量,用來存放對象執行個體</code>
<code>private</code> <code>static</code> <code>$instance</code> <code>= null;</code>
<code>private</code> <code>$conn</code><code>;</code>
<code>//設定構造方法為私有,不允許通過new獲得對象</code>
<code>private</code> <code>function</code> <code>__construct(){</code>
<code>$conn</code> <code>= mysql_connect(</code><code>'localhost'</code><code>,</code><code>'root'</code><code>,</code><code>'123456'</code><code>);</code>
<code>}</code>
<code>//擷取執行個體方法</code>
<code>public</code> <code>static</code> <code>function</code> <code>getInstance(){</code>
<code>if</code><code>(! self::</code><code>$instance</code> <code>instanceof</code> <code>self){</code>
<code>self::</code><code>$instance</code> <code>= </code><code>new</code> <code>self;</code>
<code>return</code> <code>self::</code><code>$instance</code><code>;</code>
<code>//禁止克隆</code>
<code>private</code> <code>function</code> <code>__clone(){}</code>
<code>$db</code> <code>= Mysql::getInstance();</em></code>
這樣每個資料庫連接配接,都是用的一個對象執行個體。
本文轉自shayang8851CTO部落格,原文連結:http://blog.51cto.com/janephp/1342460,如需轉載請自行聯系原作者