技术库 > Symfony

使用Symfony2 vs 完全自写代码

技术库:tec.5lulu.com

1 使用Symfony2 vs 完全自写代码

from:tec.5lulu.com

       为什么使用Symfony2要强过完全自写PHP

       如果你从来没有用过PHP框架,不了解MVC架构,或者对关于Symfony2好处的传言感到好奇,那本章正是为你准备的。我们并不会灌输为什么Symfony2可以帮助你更快更好地开发代码,而是让你自己做这个判断。

       本章的安排是,你先完全用自己的代码来实现一个简单的应用,然后重构,对其进行优化。你可以重温和理解Web开发领域经过这些年的发展,所积累的最佳实践。

       然后你将体会到为什么Symfony2可以让开发工作不再繁琐,让你真正掌控你的代码。

2PHP实现的简单博客程序

       首先,自写PHP来实现一个博客程序。博客程序至少应有一个页面用来显示数据库里所保存的文章。代码非常简单:

<?php
// index.php
$link = mysql_connect('localhost', 'myuser', 'mypassword');
mysql_select_db('blog_db', $link);
$result = mysql_query('SELECT id, title FROM post', $link);
?>
<html>
   <head>
       <title>文章列表</title>
   </head>
   <body>
       <h1>文章列表</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);

       虽然代码写起来很快,运行速度也不慢,但随着你的程序规模越来越大,维护这种风格的代码将变得越来越麻烦。可能遇到的问题包括:

       没有错误检查: 如果数据库连接没有创建成功呢?

       代码结构差: 随着代码的增多,文件将越来越大,变得不便维护。想象一下,要增加对表单的处理,代码应该写在什么位置?又如何验证数据?或者你需要发送邮件?

       难以重用代码: 如果所有的代码都是在一个文件里,如果你需要增加一个别的页面,那该如何重用你已经写好的代码逻辑呢?

       Note 另外一个没有指出的问题是,例子里的代码只能用来连接MySQL数据库。而Symfony2整合了 Doctrine ,从而可以实现数据库操作的抽象,以及表字段的映射。

       那么该如何解决这些问题呢?一劳永逸地?

3 抽离表现层

       将包含了HTML的“表现层”代码单独保存为一个文件,然后在主“逻辑”文件里引用,可以实现与前面相同的效果:

<?php
// index.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);
// include the HTML presentation code
require 'templates/list.php';

templates/list.php 文件里嵌套的是模板风格的PHP代码:

<html>
   <head>
       <title>文章列表</title>
   </head>
   <body>
       <h1>文章列表</h1>
       <ul>
           <?php foreach ($posts as $post): ?>
           <li>
               <a href="/read?id=<?php echo $post['id'] ?>">
                   <?php echo $post['title'] ?>
               </a>
           </li>
           <?php endforeach; ?>
       </ul>
   </body>
</html>

       按照惯例,包含程序逻辑的文件,如 index.php ,称作“控制器”。不管你使用哪种编程语言,哪种开发框架,都会经常遇到 controller 这个术语。控制器是指用来处理用户的输入,并生成响应内容的那部分代码。

       在上面的例子里,我们的控制器数据库里读取数据,然后调用一个模板文件来呈现这些数据。通过分离控制器的代码,你将可以轻松地修改模板文件,比如以另外的格式(如创建一个对应JSON格式的 list.json.php 模板)来输出博客文章。

使用Symfony2 vs 完全自写代码


标签: php本文链接 http://tec.5lulu.com/detail/101kan1h941m28ya5.html

我来评分 :8
1

转载注明:转自5lulu技术库

本站遵循:署名-非商业性使用-禁止演绎 3.0 共享协议

www.5lulu.com