MVC基本思想(PHP)
本文摘自于PHP框架Symfony2的官方文档
MVC是指将业务逻辑、数据、界面显示进行分离的程序实现方法。例如我们开发一个博客网站,直接的代码大致如下:
<?php
// index.php
$link = mysql_connect('localhost', 'myuser', 'mypassword');
mysql_select_db('blog_db', $link);
$result = mysql_query('SELECT id, title FROM post', $link);
?>
<!DOCTYPE html>
<html>
<head>
<title>List of Posts</title>
</head>
<body>
<h1>List of Posts</h1>
<ul>
<?php while ($row = mysql_fetch_assoc($result)): ?>
<li>
<a href="/show.php?id=<?php echo $row['id'] ?>">
<?php echo $row['title'] ?>
</a>
</li>
<?php endwhile ?>
</ul>
</body>
</html>
<?php
mysql_close($link);
?>
这样Model、View、Controller实际上在同一程序中实现,尽管在初期较为简便,但是随着业务逻辑的进一步丰富,很难进行维护。并且这部分代码无法复用,需要实现类似功能时就不得不重写。另外,该代码限定项目只能用Mysql软件。
现在讲V层分离出来,在主文件**index.php**读取数据库 ```php
List of Posts
```进一步分离,**Model.php文件** ```php
List of Posts
``` 不用框架进行MVC分离的时候,就不得不用 ob_start() ob_get_clean()完成对模板文件的数据注入,并且在模板文件中仍然不得不使用``。- ob_start([string output_callback]): 打开输出缓冲区,所有的输出信息不在直接发送到浏览器,而是保存在输出缓冲区里面,可选得回调函数用于处理输出结果信息。 - ob_get_clean: 得到当前缓冲区的内容并删除当前输出缓。