Big Bug Ban

兴趣 践行 创新

Archive for 六月, 2012

MVC in php — 框架的成型

 

一个框架是怎么成型的呢?为什么又要用MVC呢?

传统的php三层架构大致是页面显示,业务逻辑,数据库。

image

php联通后端数据源(数据库或者其他)然后经过业务逻辑渲染成html给用户(浏览器)

这一做法无可厚非,也是传统CRUD的核心,尽可能将他们拆开,优化,层次分离,便是一个框架需要做到的事情。

还拆?对

最最开始的时候,很多刚入门的程序员都比较钟爱传统的PHP嵌入式开发。

比如

<html>
<head>
<title>My Page</title>
</head>
<body>
Hello, <?php echo “Michael“;?>
</body>
</html>

将业务逻辑和前端展示放在一个页面输出,比如上图的index.php,但是文件随着业务逻辑的增长变得越来越大。代码也无法复用,阅读代码也变得异常的复杂。

比如以下这个文件[download id=”42″]

于是乎,聪明的程序员们决定抽出一些公共的函数,公共的配置,放在外面,供大家使用。

image_thumb27

目录结构中多了几个文件,showad.php也变小了。但是逻辑依然和视图混合在一起。

但是问题又来了,项目中url越来越多,造成根目录下堆的文件也越来越多,

image_thumb20

而且还有一些比如showad.php和showad_admin.php 他们取数据的过程是一致的,只是显示的页面上多了一个括号。本来可以写里面的,但是不知道谁怕改到别的童鞋修改的东西,就又添加了一个新文件。之后修改取得的数据的时候又得两个文件一起修改。来源一致但是显示不一致的问题没有得到解决。

于是大家觉得应该把视图和逻辑分开,把数据获取的工作全分离出来,然后目录结构优化成这样。

image_thumb32

统一都从index.php引入,然后通过参数include配置文件,再include app目录对应响应的文件,最后再include view中的展示用的php。

恩恩~,它看起来有点那么个意思了,单一入口,app层控制view显示。module隐含在app里面,其实现在严格的说是没有module层的

接下来就详细介绍下他们的内涵

Written by princehaku

六月 27th, 2012 at 8:41 下午