文档介绍:Symfony2 VS 原生 php 为什么说 Symfony2 超过一些框架和自己写原生 php ? 如果你从来没有使用过一个 php 框架, 也不了解 MVC , 或者对关于 Symfony2 好处的传言感到好奇,那本章正是为你准备的。我们并不会灌输为什么 Symfony2 可以帮助你更快更好地开发代码,而是让你自己做这个判断。本章将让你用纯 PHP 写一个简单的应用程序,然后将其重构,使之更有条理。你将会穿越时间,了解为什么网站开发在过去几年中会演变成现在这样。然后你将体会到为什么 Symfony2 可以让开发工作不再繁琐,让你真正掌控你的代码。用原生 php 实现一个简单的博客首先,用原生 PHP 来实现一个博客程序。博客程序至少应有一个页面用来显示数据库里所保存的文章。代码非常简单: <?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="/?id=<?php echo $row['id'] ?>"> <?php echo $row['title'] ?> </a> </li> <?php endwhile; ?> </ul> </body> </html> <?php mysql_close($link); ?> <?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="/?id=<?php echo $row['id'] ?>"> <?php echo $row['title'] ?> </a> </li> <?php endwhile; ?> </ul> </body> </html> <?php mysql_close($link); ?> 虽然代码写起来很快, 运行速度也不慢, 但随着你的程序规模越来越大, 维护这种风格的代码将变得越来越麻烦。可能遇到的问题包括: 没有错误检查: 如果数据库连接没有创建成功呢? 代码结构差: 随着代码的增多, 文件将越来越大, 变得不便维护。想象一下, 要增加对表单的处理,代码应该写在什么位置?又如何验证数据?或者你需要发送邮件? 难以重用代码: 如果所有的代码都是在一个文件里, 如果你需要增加一个别的页面, 那该如何重用你已经写好的代码逻辑呢? 另外一个没有指出的问题是, 例子里的代码只能用来连接 MySQL 数据库。而 Symfony2 整合了 Doctrine ,从而可以实现数据库操作的抽象,以及表字段的映射。抽离表现层将包含了 HTML 的“表现层”代码单独保存为一个文件,然后在主“逻辑”文件里引用,可以实现与前面相同的效果: <?php // $link = mysql_connect('localhost', 'myuser', 'mypassword'); mysql_select_db('blog_db', $link); $result = mysql_query('SELECT id, title FROM post', $link); $posts = array(); while ($row = mysql_fetch_assoc($result)) { $posts[] = $row; } mysql_close($link); // 去包含 HTML 的