在说 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层,代码以下:
class AuthController { public function login() { $FLogin = new loginForm(); $FLogin->save(); } } // 平常在自力的文件夹中 class loginForm { public function __construct() { $post = $_POST; } public function save() { } }
以上的就是处理 controller 中 form 表单的题目,这个题目基本上能减缓许多代码题目。
发散
从处理 form 层来看,实在有许多相似的题目都能处理。我们晓得前端有个叫做 vue.js 的框架,它内里提到一个观点叫做 MVVM 模子。
实在在展示庞杂页面的时刻,后端在对外输出数据时,完整也能够采纳这玩意举行数据输出。至于怎样竖立如许的一个模子,那就细致得看营业逻辑了。
这里简朴拿用户中间举个例子,由于每每这里不单单议须要一个表的数据:
class AuthController { public function userCenterAction() { return new userVM(); } } class userVM { public $user; public $orders; public $other; public function __construct() { $this->user = $this->getUser(); $this->orders = $this->getOrders(); $this->handle(); } private function getUser() { return NULL; } private function getOrders() { return NULL; } private function handle() { } }
以上代码中,有个 VM 层,能够将相干猎取数据的代码放在各自的要领中,然后在 handle 要领中自由组合。如许在 controller 中的代码也异常便于管理。
再想一想,有无能够封装的其他层呢?实际上是有的,比方 request 层,另有经常被框架封装好的 validate 层,另有 laravel 中比较盛行的 Middleware 层等等。只能说体系越庞杂,层越多。
每一个庞杂体系的背地都包含着高等开辟工程师和架构师的设想思绪。以上说那末多,不晓得读者可否明白这些东西,就拿以上代码来讲,内里就包含着另一种设想形式:制作者形式。
总结
代码写多了,也就晓得个中包含的道理了。当一个新框架降生后,关注点从进修这个框架,逐步变成了这个框架是怎样设想的,处理什么样的题目。哪些处所用了比较好的手艺和要领,从中能收获到什么。一些处所的设想思绪是什么样的,有么有更好的设想,为什么我能想到,对方想不到呢,是否是我遗漏了什么。
前几年使用过种种 PHP 框架,小到 CI,大到 Symfony。不必那末多框架,也体味不到这些东西。进修编程实在和英语一样,没什么捷径能够走。
多写,多想,多练......
以上就是PHP框架中MVC架构的剖析(附示例)的细致内容,更多请关注ki4网别的相干文章!