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

List of Posts

```
进一步分离,**Model.php文件** ```php <?php echo $title ?> ``` **list.php** ```php

List of Posts

``` 不用框架进行MVC分离的时候,就不得不用 ob_start() ob_get_clean()完成对模板文件的数据注入,并且在模板文件中仍然不得不使用``。
- ob_start([string output_callback]): 打开输出缓冲区,所有的输出信息不在直接发送到浏览器,而是保存在输出缓冲区里面,可选得回调函数用于处理输出结果信息。 - ob_get_clean: 得到当前缓冲区的内容并删除当前输出缓。
posted @ 2015-04-17 15:16  zjuhjm  阅读(211)  评论(0编辑  收藏  举报