天天看點

面向對象程式設計,類切換

<code>&lt;?php</code>

<code>abstract</code> <code>class</code> <code>ParamHandler{</code>

<code>    </code><code>protected</code> <code>$source</code><code>;</code>

<code>    </code><code>protected</code> <code>$param</code> <code>= </code><code>array</code><code>();</code>

<code>    </code><code>function</code> <code>__construct(</code><code>$source</code><code>) {</code>

<code>        </code><code>$this</code><code>-&gt;source = </code><code>$source</code><code>;</code>

<code>    </code><code>}</code>

<code>    </code><code>function</code> <code>addParam(</code><code>$key</code><code>,</code><code>$val</code><code>) {</code>

<code>        </code><code>$this</code><code>-&gt;params[</code><code>'$key'</code><code>] = </code><code>$val</code><code>;</code>

<code>    </code><code>function</code> <code>getAllParams() {</code>

<code>        </code><code>return</code> <code>$this</code><code>-&gt;params;</code>

<code>    </code><code>static</code> <code>function</code> <code>getInstance(</code><code>$filename</code><code>){     </code><code>//用來擷取子類執行個體,檔案類型多時,隻                                                    //需在這裡加上if語句,然後對應寫上子類</code>

<code>        </code><code>if</code> <code>(preg_match(</code><code>"/\.xml$/i"</code><code>, </code><code>$filename</code><code>)) {</code>

<code>            </code><code>return</code> <code>new</code> <code>XmlParamHandle(</code><code>$filename</code><code>);</code>

<code>        </code><code>}</code>

<code>        </code><code>return</code> <code>new</code> <code>TextParamHandler(</code><code>$filename</code><code>);</code>

<code>    </code><code>abstract</code> <code>function</code> <code>write();  </code><code>//保證子類實作這兩個方法</code>

<code>    </code><code>abstract</code> <code>function</code> <code>read();</code>

<code>}</code>

<code>?&gt;</code>

然後下面是子類

<code>class</code> <code>XmlParamHandle </code><code>extends</code> <code>ParamHdndle{</code>

<code>    </code><code>function</code> <code>write(){}</code>

<code>    </code><code>function</code> <code>read(){}</code>

<code>class</code> <code>TextParamHandle </code><code>extends</code> <code>ParamHdndle{</code>

這樣執行個體化的時候可以這樣子

$test = ParamHandler::getInstance("./params.xml");

這樣根據傳入的params.xml檔案會找到對應的類執行個體化。

本文轉自  陳小龍哈   51CTO部落格,原文連結:http://blog.51cto.com/chenxiaolong/1695804