日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
詳解PHP實(shí)現(xiàn)MVC的幾種方法

我們這里介紹PHP實(shí)現(xiàn)MVC的幾種方法,首先將從什么是MVC,然后以代碼的形式介紹PHP實(shí)現(xiàn)MVC。相信所有習(xí)慣了使用MVC來組織自己的項(xiàng)目的人,讓他選擇一個(gè)新的項(xiàng)目構(gòu)架時(shí),一定不會(huì)放棄MVC。

為郾城等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及郾城網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、郾城網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

傳統(tǒng)的面相過程式的開發(fā)方式在處理中型以上的應(yīng)用時(shí),就開始顯得力不從心。即便我們能夠快速的完成需求,但是在需求發(fā)生變更后或者進(jìn)行后期維護(hù)的時(shí)候,我們會(huì)深深地陷入我們?cè)缙诖罱ǖ南葳逯小?/p>

什么是MVC?

關(guān)于MVC的定義和解釋,可以說多種多樣。我們可以在Wiki或者[2]中找到更為詳盡的解釋,這里我并不打算,也沒有能力進(jìn)行深入的講解,從PHP開發(fā)的角度來講,MVC可以概括為:

視圖(The View):

一說到視圖,我們很多人都會(huì)想到模板引擎(諸如Smarty等等)。其實(shí)就是各種各樣的輸出,比如說html模板和Javascript文件等。

模塊(The Model)

模塊代表了程序的邏輯,在企業(yè)應(yīng)用中通常稱為業(yè)務(wù)邏輯層。一般來講,這一層完成的工作是把原始的數(shù)據(jù)處理成按照我們?cè)O(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)的有意義的數(shù)據(jù)序列,并將這些數(shù)據(jù)交給視圖去處理。通常情況下, 模塊中會(huì)利用一個(gè)數(shù)據(jù)抽象類來進(jìn)行與數(shù)據(jù)操作有關(guān)的處理。
Model通常包含了哪些用來同數(shù)據(jù)庫(kù)打交道的函數(shù)。

控制器(The Controller)

控制器使所有WEB應(yīng)用的第一站,他接受收到的參數(shù),比如$_GET變量,然后做出相應(yīng)的反應(yīng)。
關(guān)于MVC的是否適合PHP的爭(zhēng)論也很多,人們不斷的討論MVC是否適合PHP[3],現(xiàn)在也已經(jīng)有了很多的MVC框架,諸如PHP MVC Frameworks中列出的[4]。那么,為什么人們這么熱衷于MVC,我們?yōu)槭裁匆褂肕VC在我們的設(shè)計(jì)中呢。

為什么用MVC?

MVC最早是用來解決桌面GUI的編程問題,最早的MVC框架應(yīng)該是Sun在1999年提出的Model 2,后來演變成了Struts。MVC帶給人們深刻的印象,但是我們?cè)谑褂玫倪^程中,卻并沒有認(rèn)真的想過為什么使用MVC。

在傳統(tǒng)的桌面應(yīng)用中,一旦Model中有時(shí)間發(fā)生,我們可以主動(dòng)的讓View界面進(jìn)行刷新,從而展示后臺(tái)發(fā)生的變化。而在Web應(yīng)用中,我們似乎限于傳統(tǒng)的Http的Request/Response的方式,我們似乎沒有辦法讓用戶端進(jìn)行更新。這一段討論,并不是認(rèn)為MVC不能夠用來進(jìn)行WEB應(yīng)用的開發(fā),而是覺得從某種程度上來說,他還不是最合適的。

關(guān)于使用MVC的爭(zhēng)論還有很多[1],但是相信所有習(xí)慣了使用MVC來組織自己的項(xiàng)目的人,讓他選擇一個(gè)新的項(xiàng)目構(gòu)架時(shí),一定不會(huì)放棄MVC。

如何PHP實(shí)現(xiàn)MVC?

下面是一個(gè)超級(jí)簡(jiǎn)單的MVC結(jié)構(gòu)實(shí)現(xiàn),甚至連數(shù)據(jù)源都用了一個(gè)內(nèi)置的固定數(shù)組,雖然簡(jiǎn)單,但其實(shí)眾多的PHP Framework核心實(shí)現(xiàn)的思想應(yīng)該和這個(gè)是差不多的,只不過一些framework提供了更多的方便開發(fā)者使用的工具,我也想自己來實(shí)現(xiàn)一個(gè)PHP的框架,目前正在著手策劃中,也希望自己能夠從框架的開發(fā)中學(xué)習(xí)到更多的PHP設(shè)計(jì)思想和方法。

 
 
 
  1. Controller.php
  2. include 'Model.php';
  3. include 'View.php';
  4. class Controller {
  5. private $model     = '';
  6. private $view     = '';
  7. public function Controller(){
  8. $this->model    =    new Model();
  9. $this->view        =    new View();
  10. }
  11. public function doAction( $method = 'defaultMethod', $params = array() ){
  12. if( empty($method) ){
  13. $this->defaultMethod();
  14. }else if( method_exists($this, $method) ){
  15. call_user_func(array($this, $method), $params);
  16. }else{
  17. $this->nonexisting_method();
  18. }
  19. }
  20. public function link_page($name = ''){
  21. $links = $this->model->getLinks();
  22. $this->view->display($links);
  23. $result = $this->model->getResult($name);
  24. $this->view->display($result);
  25. }
  26. public function defaultMethod(){
  27. $this->br();
  28. echo "This is the default method. ";
  29. }
  30. public function nonexisting_method(){
  31. $this->br();
  32. echo "This is the noexisting method. ";
  33. }
  34. public function br(){
  35. echo " />";
  36. }
  37. }
  38. $controller = new Controller();
  39. $controller->doAction('link_page', 'b');
  40. $controller->doAction();
  41. Model.php
  42. Code
  43. class Model {
  44. private $database = array(
  45. "a"    =>    "hello world",
  46. "b"    =>    "ok well done",
  47. "c"    =>    "good bye",
  48. );
  49. //@TODO connect the database
  50. //run the query and get the result
  51.     public function getResult($name){
  52. if( empty($name) ){
  53. return FALSE;
  54. }
  55. if( in_array($name, array_keys( $this->database ) ) ){
  56. return $this->database[$name];
  57. }
  58. }
  59. public function getLinks(){
  60. $links = "Link A  ";
  61. $links.= "Link B  ";
  62. $links.= "Link C  ";
  63. return $links;
  64. }
  65. }
  66. View.php
  67. class View {
  68. public function display($output){
  69. //        ob_start();
  70.         
  71. echo $output;
  72. }
  73. }

文章名稱:詳解PHP實(shí)現(xiàn)MVC的幾種方法
文章來源:http://www.5511xx.com/article/copccde.html