亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP框架中MVC架構的分析(附示例)

2024-09-04 11:43:56
字體:
來源:轉載
供稿:網友

本篇文章給大家帶來的內容是關于PHP框架中MVC架構的分析(附示例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

在說 MVC 架構之前,先說說PHP框架吧。很多很多學完PHP語言的人,面對的就是PHP各種各樣的框架。什么TP啊、Yii啊、CI啊,還有很流行的laravel啊等等。

他們的大部分都會說自己是基于 MVC 的架構,接著你得試著去理解 MVC 的邏輯,并嘗試著用這樣的邏輯去構建一個網站,然后會說 MVC 真香~

面試

很多 PHP 的面試中,可能會問關于 MVC 的問題,比如 MVC 到底是什么意思,怎樣理解這種架構。然而很多人的理解是 model 是模型,他對應著數據庫中的表結構;view 對應著頁面,用于展示;controller 主要用來寫各種邏輯,關聯數據和頁面的顯示。

以上回答基本上沒有問題,但一個網站的結構真的有那么簡單么?顯然不是

設計

在說之前,首先讓我們了解一下設計模式的一種:中介者模式。一個形象的理解就是:港行插頭和國行插頭的轉接頭。

在 MVC 架構中 controller 就是這個轉接頭。它只負責把 model 中的數據轉接給 view,對于訪問者來說,他們是看不到 model 中保存的真實數據的。從另外一個角度來說,這種中介者模式可以很好的將兩層數據進行友好的通信。

爬坑

這種模式真的那么好么?隨著業務邏輯的越來越復雜,會發現 controller 中的代碼越來越多,甚至自己都不愿去調整和優化冗余代碼。

但從宏觀上來說,網站無非是請求多一些,表單多一些,頁面多一些啊,其他也沒什么了,為什么會這樣呢?

沒錯,就是因為這樣或那樣的東西比較多,導致 controller 中每個方法都很長,那么能想到的解決方法就是拆分。

如果用過 yii 框架,那么你會知道最簡單的辦法是加一個請求form層,代碼如下:

  1. class AuthController { 
  2.  
  3.     public function login() { 
  4.  
  5.         $FLogin = new loginForm(); 
  6.  
  7.         $FLogin->save(); 
  8.  
  9.     } 
  10.  
  11.  
  12.  
  13.  
  14. // 一般在獨立的文件夾中 
  15.  
  16. class loginForm { 
  17.  
  18.     public function __construct() { 
  19.  
  20.         $post = $_POST
  21.  
  22.     } 
  23.  
  24.      //Vevb.com 
  25.  
  26.     public function save() { 
  27.  
  28.     } 
  29.  

以上的就是解決 controller 中 form 表單的問題,這個問題基本上能緩解很多代碼問題。

發散

從解決 form 層來看,其實有很多類似的問題都能解決。我們知道前端有個叫做 vue.js 的框架,它里面提到一個概念叫做 MVVM 模型。

其實在展現復雜頁面的時候,后端在對外輸出數據時,完全也可以采用這玩意進行數據輸出。至于如何建立這樣的一個模型,那就具體得看業務邏輯了。

這里簡單拿用戶中心舉個例子,因為往往這里不僅僅需要一個表的數據:

  1. class AuthController { 
  2.  
  3.     public function userCenterAction() { 
  4.  
  5.         return new userVM(); 
  6.  
  7.     } 
  8.  
  9.  
  10. class userVM { 
  11.  
  12.     public $user
  13.  
  14.     public $orders
  15.  
  16.     public $other
  17.  
  18.     public function __construct() { 
  19.  
  20.         $this->user = $this->getUser(); 
  21.  
  22.         $this->orders = $this->getOrders(); 
  23.  
  24.         $this->handle(); 
  25.  
  26.     } 
  27.  
  28.     private function getUser() { 
  29.  
  30.         return NULL; 
  31.  
  32.     } 
  33.  
  34.     private function getOrders() { 
  35.  
  36.         return NULL; 
  37.  
  38.     } 
  39.  
  40.     private function handle() { 
  41.  
  42.     } 
  43.  

以上代碼中,有個 VM 層,可以將相關獲取數據的代碼放在各自的方法中,然后在 handle 方法中自由組合。這樣在 controller 中的代碼也非常便于管理。

再想想,有沒有可以封裝的其他層呢?其實是有的,比如 request 層,還有經常被框架封裝好的 validate 層,還有 laravel 中比較流行的 Middleware 層等等。只能說系統越復雜,層越多。

每個復雜系統的背后都蘊含著高級開發工程師和架構師的設計思路。以上說那么多,不知道讀者能否理解這些東西,就拿以上代碼來說,里面就蘊含著另一種設計模式:建造者模式。

總結:

代碼寫多了,也就知道其中蘊含的道理了。當一個新框架誕生后,關注點從學習這個框架,慢慢變成了這個框架是如何設計的,解決什么樣的問題。哪些地方用了比較好的技術和方法,從中能收獲到什么。一些地方的設計思路是什么樣的,有么有更好的設計,為何我能想到,對方想不到呢,是不是我遺漏了什么。

前幾年使用過各種 PHP 框架,小到 CI,大到 Symfony。不用那么多框架,也體會不到這些東西。學習編程其實和英語一樣,沒什么捷徑可以走。

多寫,多想,多練......

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品美女在线| 久久久久在线观看| 精品欧美国产一区二区三区| 日韩www在线| 一区二区三区四区视频| 国产精品r级在线| 最近2019年中文视频免费在线观看| 啪一啪鲁一鲁2019在线视频| 亚洲欧美成人一区二区在线电影| 亚洲精品一区在线观看香蕉| 国产一区二中文字幕在线看| 欧美视频在线免费看| 91免费人成网站在线观看18| 欧美性猛交xxxx久久久| 136fldh精品导航福利| 亚洲欧美激情精品一区二区| 中文字幕精品视频| 欧美精品激情视频| 亚洲精品在线观看www| 少妇高潮 亚洲精品| 亚洲第一福利在线观看| 在线观看欧美成人| 91在线视频导航| 国产精品美女网站| 日韩亚洲一区二区| 日韩欧美中文第一页| 国产精品视频网址| 久久久日本电影| 亚洲欧洲在线播放| 欧美午夜片在线免费观看| 国产欧美日韩中文字幕在线| 国产精品久久久久国产a级| 51精品在线观看| 亚洲aa在线观看| 亚洲视频999| 亚洲最大的成人网| 亚洲在线一区二区| 成人在线小视频| 亚洲天堂视频在线观看| 久久综合久久88| 精品国产成人在线| 国产精品露脸av在线| 国产精品高潮呻吟久久av黑人| 国产美女久久精品| 精品国产乱码久久久久久天美| 在线播放日韩av| 欧美日韩在线视频首页| 日韩精品中文字幕久久臀| 国产剧情久久久久久| 国产精选久久久久久| 亚洲午夜精品久久久久久久久久久久| 色伦专区97中文字幕| 97久久精品在线| 亚洲精品在线观看www| 亚洲a∨日韩av高清在线观看| 欧洲精品毛片网站| 久久久久久这里只有精品| 国产中文字幕91| 欧美老少做受xxxx高潮| 色99之美女主播在线视频| 久久97久久97精品免视看| 久久国产精品久久精品| 亚洲色图综合久久| 亚洲精品美女视频| 久久躁日日躁aaaaxxxx| 精品伊人久久97| 97在线观看视频国产| 国产成人精品a视频一区www| 2021久久精品国产99国产精品| 国产精品91久久久| 一区二区三区视频观看| 国产精品中文字幕久久久| 国产国语刺激对白av不卡| 日韩欧美亚洲成人| 欧美激情精品在线| 日韩精品视频免费专区在线播放| 欧美精品videossex88| 国产丝袜一区二区三区免费视频| 中文字幕亚洲无线码在线一区| 久青草国产97香蕉在线视频| 亚洲精品福利资源站| 夜夜嗨av色一区二区不卡| 国产丝袜一区视频在线观看| 欧美中文字幕精品| 亚洲新中文字幕| 亚洲成人精品视频在线观看| 日韩中文字幕久久| 国产精品久在线观看| 日韩中文字幕亚洲| 久久国产精品久久久| 国产精品久久久精品| 国产在线拍偷自揄拍精品| 亚洲欧洲日本专区| 久久精品成人欧美大片古装| 精品久久香蕉国产线看观看gif| 在线亚洲欧美视频| 精品一区二区三区四区在线| 91亚洲精品久久久久久久久久久久| 欧美性色xo影院| 97精品视频在线播放| 欧美日韩人人澡狠狠躁视频| 国产精品美女主播| 欧美日韩国产丝袜美女| 92版电视剧仙鹤神针在线观看| 精品日本高清在线播放| 亚洲欧美日韩网| 欧美成aaa人片在线观看蜜臀| 欧美香蕉大胸在线视频观看| 国产日韩在线观看av| 精品亚洲精品福利线在观看| 日韩欧美在线视频免费观看| 亚洲国内精品在线| 国产精品午夜视频| 国产成人精品视| 精品久久香蕉国产线看观看gif| 欧美电影免费观看网站| 欧美第一页在线| 欧美性理论片在线观看片免费| 欧美日韩免费网站| 国产精品视频久久久| 国产精品亚发布| 日韩视频在线一区| 国产精品成人在线| 成人在线视频福利| 亚洲性日韩精品一区二区| 欧美成人亚洲成人| 日av在线播放中文不卡| 欧美色视频日本版| 中文字幕国内精品| 国产视频久久网| 色婷婷综合久久久久中文字幕1| 日韩中文第一页| 成人av色在线观看| 国产精品视频中文字幕91| 中文字幕日本欧美| 久久久免费观看| 欧美日韩国产一区在线| 中国china体内裑精亚洲片| 日韩视频免费看| 日韩电视剧免费观看网站| 中文字幕日韩综合av| 日本精品性网站在线观看| 亚洲一区二区日本| 日韩精品一区二区视频| 日韩欧美亚洲国产一区| 色婷婷av一区二区三区在线观看| 亚洲天堂网在线观看| 色哟哟入口国产精品| 福利一区视频在线观看| 国产精品美女主播在线观看纯欲| 久久在线免费观看视频| 国产欧美日韩最新| 亚洲欧美日韩中文在线| 久久久成人的性感天堂| 午夜免费在线观看精品视频| 国模精品视频一区二区| 26uuu另类亚洲欧美日本一| 成人乱人伦精品视频在线观看| 国产成人亚洲综合91| 91九色精品视频| 国产日韩欧美在线播放| 亚洲午夜性刺激影院| 日韩在线欧美在线国产在线| 欧美日韩成人精品|