PHP基於物件導向實現的留言本功能例項

2022-09-28 10:06:08 字數 3374 閱讀 4173

要設計一留言本,一切都將以留言本為核心,抓到什麼是什麼,按流程走下來,即按使用者填寫資訊->留言->展示的流程進行。

現在用物件導向的思維思考這個問題,在物件導向的世界,會想盡辦法把肉眼能看見的以及看不見的,但是實際存在的物或者流程抽象出來。既然是留言本,那麼就存在留言內容這個實體,這個留言實體(domain)應該包括留言者姓名、e-mail、留言內容等要素,如下面**所示

//留言實體類

class message

public function __get($name)}}

上面的類就是所說的domain,是乙個真實存在的、經過抽象的實體模型。然後需要乙個留言本模型,這個留言本模型包括留言本的基本屬性和基本操作,**如下所示

class gbookmodel

public function getbookpath()

程式設計客棧

public function open()

public function close()

public function read()

//寫入留言

public function write($data)

//模擬資料的安全處理,先拆包再打包

public static function safe($data)

return $messagebox;

} public function delete()

}實際留言的過程可能會更複雜,可能還包括一系列準備操作以及log處理,所以應定義乙個類負責資料的邏輯處理,**如下所示

class le**emodel

}最後,通過乙個控制器,負責對各種操作的封裝,這個控制器是直接面向使用者的,所以包括留言本檢視、刪除、留言等功能。可以形象理解為這個控制器就是留言本所提供的直接面向使用者的功能,封裝了操作細節,只需要呼叫控制器的相應方法即可,**如下所示

class authorcontrol

public function view(gbookmodel $g)

public function delete(gbookmodel $g)

}測試**如下所示

$message = new message;

$message->name = 'chenqionghe';

$message->email = '[email protected]';

$message->content = 'chenqionghe is a handson boy.';

$gb = new authorcontrol();//新建乙個留言相關的控制器

$pen = new le**emodel();//拿出筆

$book = new gbookmodel();//翻出筆記本

$book->setbookpath("e:\\chenqionghe.txt");

$gb->message($pen,$book,$message);

echo $gb->view($book);

//$gb->delete($book);

這樣看起來是不是比物件導向過程要複雜多了?確實是複雜了,**量增多了,也難理解 。似乎體現不出優點來。但是你思考過以下問題嗎?

1.如果讓很多人來負責完善這個留言本,一部分實ygpivhxv體關係的建立,一部人負責資料操作層的**,這樣是不是更容易分工了呢?

2.如果我要把這個留言本進一步開發,實現記錄在資料庫中,或者新增分頁功能,又該如何呢?

要實現上面的第二問題提出的功能,只需在gookmodel類中新增分頁方法,**如下所示

public function readbypage()

for($i=1;$iwww.cppcns.com" >'.$i.'';}}

然後到前端控制器裡新增對應的action,**如下所示

public function viewbypage(gbookmodel $g)

執行結果如下

只需要這麼簡單的兩步,就可以實現所需要的分頁功能,而且已有的方法都不用修改,只需要在相關類中新增方法即可。當然,這個分頁在實際點選時是有問題的,因為沒有把action分開,而是通通放在乙個頁面裡。對照著上面的思路,還可以把留言本擴充套件為mysql資料庫的。

這個程式只體現了非常簡單的設計模式,這個程式還有許多要改進的地方,每個程式設計師心中都有乙個自己的oo。專案越大越能體現模組劃分、物件導向的好處。

下面是完整的**

<?php //留言實體類

class message

public function __get($name)

}}/**

* 留言本模型,負責管理留言本

* $bookpath:留言本屬性

*/class gbookmodel

public function getbookpath()

public function open()

public function close()

public function read()

public function readbypage()

for($i=1;$i'.$i.'';

}} //寫入留言

public function write($data)

//模擬資料的安全處理,先拆包再打包

public static function safe($data)

return $messagebox;

} public function delete() }

class le**emodel

}class authorcontrol

public function view(gbookmodel $g)

public function viewbypage(gbookmodel $g)

public function delete(gbookmodel $g) }

$message = new message;

$message->name = 'chenqionghe';

$message->email = '[email protected]';

$message->content = 'chenqionghe is a handson boy.';

$gb = new authorcontrol();//新建乙個留言相關的控制器

$pen = new le**emodel();//拿出筆

$book = new gbookmodel();//翻出筆記本

$book->setbookpath("e:\\chenqionghe.txt");

$gb->message($pen,$book,$message);

//echo $gb->view($book);

echo $gb->viewbypage($book);

//$gb->delete($book);

php之文字式留言本

需要知識點 1 檔案操作 file put content 檔名,內容 檔案內容的寫入函式 覆蓋式寫入檔案 file get content 檔名 檔案的內容獲取函式 2.字串的處理函式 返回陣列explode 分隔符,字串 j將字串拆分成陣列的函式 返回字串implode 分割符,陣列 將陣列以指...

web py sqlite寫的簡單留言本

很亂,而且沒有用到模板,把html 跟python 混在一起了,而且也沒有用到web.py本身提供的資料庫操作模組,絕對粗超的 學習了很多東西,首先當然是web.py,然後是sqlite,接下來是time模組 看來也唯有不斷的實踐,才真正能進步!說實在的,偶學html到現在這麼久,還是半桶水,悲劇了...

基於SS框架的留言本前台控制器

備用 title gues.ct.php description 前台控制器 author jiangbin zhangjb shengshi.com.cn date 2012 2 20 require once server document root require global.fun.php...