PHP的高級OOP技術
在看過基本的OOP概念後
序列化(Serializing)
PHP不支持永久對象
在PHP
總而言之
例子 :
代碼:
以下是引用片段
以下是引用片段:
<?php
$obj=new Classfoo();
$str=serialize($obj);
//幾個月以後
//從磁盤中裝入str
$obj2=unserialize($str)
?>
你恢復了成員數據,但是不包括方法(根據文檔所說)。tw.wiNgwit.Com這導致了只能通過類似於使用$obj2->x來存取成員變量(你沒有別的方法!)的唯一辦法,所以不要在家裡試它。
有一些辦法可以解決這個問題,我把它留著,因為對這篇簡潔的文章來說,他們太不好。
使用類進行數據存儲
對於PHP和OOP一件非常好的事情就是,你可以很容易地定義一個類來操作某件事情,並且無論何時你想用的時候都可以調用相應的類。假設你有一個HTML表單,用戶可以通過選擇產品ID號來選擇一個產品。在數據庫中有產品的信息,你想把產品顯示出來,顯示它的價格等等。你擁有不同類型的產品,並且同一個動作可能對不同的產品具有不同的意思。例如,顯示一個聲音可能意味著播放它,但是對於其它種類的產品可能意味著顯示一個存在數據庫中的圖片。你可以使用OOP或PHP來減少編碼並提高質量:
定義一個產品的類,定義它應該有的方法(例如:顯示),然後定義對每一種類型的產品的類,從產品類派後出來(SoundItem類,ViewableItem類,等等),覆蓋在產品類中的方法,使它們按你的想法動作。
根據數據庫中每一種產品的類型(type)字段給類命名,一個典型的產品表可能有(id, type, price, description, 等等字段)...然後在處理腳本中,你可以從數據庫中取出type值,然後實例化一個名為type的對象:
代碼:
以下是引用片段: [1] [2] [3] [4] [5]
<?php
$obj=new $type();
$obj->action();
?>
這是PHP的一個非常好的特性,你可以不用考慮對象的類型,調用$obj的顯示方法或其它的方法。使用這個技術,你不需要修改腳本去增加一個新類型的對象,只是增加一個處理它的類。
From:http://tw.wingwit.com/Article/program/PHP/201311/21399.html