﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>PHP博客-PHP 软件工程</title><link>http://www.phpweblog.net/jake/</link><description>www.phpuml.cn</description><language>zh-cn</language><lastBuildDate>Wed, 20 Aug 2008 08:54:38 GMT</lastBuildDate><pubDate>Wed, 20 Aug 2008 08:54:38 GMT</pubDate><ttl>60</ttl><item><title>【PHP软件工程】简单留言本的构造过程</title><link>http://www.phpweblog.net/jake/archive/2008/02/28/2850.html</link><dc:creator>jake</dc:creator><author>jake</author><pubDate>Thu, 28 Feb 2008 03:50:00 GMT</pubDate><guid>http://www.phpweblog.net/jake/archive/2008/02/28/2850.html</guid><wfw:comment>http://www.phpweblog.net/jake/comments/2850.html</wfw:comment><comments>http://www.phpweblog.net/jake/archive/2008/02/28/2850.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.phpweblog.net/jake/comments/commentRss/2850.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/jake/services/trackbacks/2850.html</trackback:ping><description><![CDATA[
<p>
          <br/>
        </p>
<div class="item-body">
<div class="item-content">
<p>
              <span style="FONT-FAMILY: 宋体">
                <img src="http://p.blog.csdn.net/images/p_blog_csdn_net/jaketseng/e1.jpg" alt=""/>
              </span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">一、简单留言本</span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">关于简单留言本的制作方法，请看：《[转]使用FleaPHP框架构建简单留言本应用》
<br/>
<a href="http://www.fleaphp.org.cn/bbs/viewthread.php?tid=161">http://www.fleaphp.org.cn/bbs/viewthread.php?tid=161</a>
              </span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">本文也是结合该程序来讲述的，所以非常建议读者在看此文前先动手做一遍《[转]使用FleaPHP框架构建简单留言本应用》的例子</span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">二、使用Enterprise.Architect.v6(以下简称EA)</span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">EA是比较适合与PHPer的一个UML建模工具，至少，它可以生成PHP代码。而且在下面，大家可以看到用EA来开发FleaPHP框架的PHP应用是件愉快的事情。</span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">三、开发简单留言本的过程</span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">
                <strong>首先，我们来看看最终的项目结构图</strong>
              </span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">可以看到我们有三个根模型：用例模型、数据模型、架构模型。我们主要的开发工作，其实就是完善三个根模型里面的东东。</span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">
                <strong>
                  <img src="http://p.blog.csdn.net/images/p_blog_csdn_net/jaketseng/e2.jpg" alt=""/>
                </strong>
              </span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">
                <strong>第一步，我们做需求获取工作--用例图，完善用例模型。</strong>
              </span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">
                <img src="http://p.blog.csdn.net/images/p_blog_csdn_net/jaketseng/e3.jpg" alt=""/>
              </span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">我们需要想想，该程序使用的人是谁，</span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">然后我们得出我们的程序的使用者--用Actor来显示</span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">在本程序中，我们只有一个使用者，也就是我们的访问者。</span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">先在用例图中方上一个小人符号（Actor）表示我们的主角（访问者）。</span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">然后我们就想想，我们的主角打算怎么使用我们的程序呢？</span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">然后我们就可以想到：主角(访问者)只有【访问留言页】和【增加留言】两个事情可以做。</span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">那么，我们就放上【访问留言页】和【增加留言】两个用例，<font face="宋体">用&gt;&gt;use&lt;&lt;的箭头从主角指向两个用例</font>，表示这是主角做的事情。</span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">（这图中use箭头不明显，忘记了怎么把箭头调出来。呵呵。。。）</span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">另外：大家可以发现，这也对应了我们FleaPHP的Controller里面的操作。</span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">
                <strong>第二步，我们来建数据表，也就是完善数据模型。</strong>
              </span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">用EA建数据表也是很方便的，也就是构造名为table的特殊类。</span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">相当于，这个特殊类的属性，就是我们数据表的列名，它的方法，就是我们的表管理，或者primaryKey的表示。</span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">我们完全可以把它当做phpMyAdmin里面的建表一样用。我们会发现其实它跟建一个普通类没有分别。</span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">但是，我们的EA建表是很好处的哦：它可以直接生成建表的SQL语句。</span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">
                <strong>
                  <img src="http://p.blog.csdn.net/images/p_blog_csdn_net/jaketseng/e4.jpg" alt=""/>
                </strong>
              </span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">
                <strong>第三步，我们导入FleaPHP本身的文件。</strong>
              </span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">在根模型--构造模型上点右键，然后按照图中选择。再选择到我们的FLEA文件夹所在。导入就是了。我们就可以看到有一个FLEA的文件夹（包）在构造模型下了。里面有FLEA的所有类。</span>
            </p>
<p>
              <span style="FONT-FAMILY: 宋体">(题外话：EAv6在导入FLEAPHP1.07的带例子那个版本好像导入不完整，有提示出错。导入runtime的那版本，可以导入完整，但是也提示有错。)</span>
            </p>
<p>
              <img src="http://p.blog.csdn.net/images/p_blog_csdn_net/jaketseng/e5.jpg" alt=""/>
            </p>
<p>
              <br/>
<strong>第四步，我们根据用例图，写Controller_Default类的内容</strong>
            </p>
<p>其实就是填写好Controller_Default类的所有方法和属性。</p>
<p>而且Controller_Default类都是继承FLEA_Contrller_Action的，</p>
<p>我们把FLEA_Contrller_Action类从已经导入的FLEA文件夹中直接拉到Contrller包的类图里。</p>
<p>让我们的Controller_Default可以继承它。</p>
<p>
              <img src="http://p.blog.csdn.net/images/p_blog_csdn_net/jaketseng/e6.jpg" alt=""/>
            </p>
<p>另外，上图中，在Controller_Default的一些方法里，我们可以先初始化一些代码进去--老实说，这样做，我们都不用再写其他代码了。。</p>
<p>如果是其他的项目，我们需要继续完成其他的Controller类的方法和属性。本例就只有一个。</p>
<p>
              <strong>第五步，我们根据数据表图，写Model_GB的内容，也就是填写好Model_GB的属性和方法</strong>
            </p>
<p>FleaPHP的方便在这里就可以看到了：每一张数据表对应一个Model类（好好体会哦！）。</p>
<p>我们可以非常简单按照这个思路来设计。</p>
<p>而且同样，我们也在tableName和primaryKey两个属性里，写上我们的初始化代码，那么最后生成的Model类PHP文件，根本就不用再写代码了。</p>
<p>
              <strong>
                <img src="http://p.blog.csdn.net/images/p_blog_csdn_net/jaketseng/e7.jpg" alt=""/>
              </strong>
            </p>
<p>
              <strong>第六步，我们可以开始做系统了。</strong>
            </p>
<p>先由数据模型生成SQL建表语句，然后再导入到phpMyAdmin就行。</p>
<p>
              <img src="http://p.blog.csdn.net/images/p_blog_csdn_net/jaketseng/e8.jpg" alt=""/>
            </p>
<p>效果是：</p>
<p>
              <img src="http://p.blog.csdn.net/images/p_blog_csdn_net/jaketseng/e9.jpg" alt=""/>
            </p>
<p>
              <br/>
<strong>第七步，我们生成Controller_Default代码，</strong>
            </p>
<p>请注意路径和文件名(那个文件名是Default.php，里面的类名是Controller_Default)</p>
<p>
              <img src="http://p.blog.csdn.net/images/p_blog_csdn_net/jaketseng/e10.jpg" alt=""/>
            </p>
<p>效果是：</p>
<p>
              <img src="http://p.blog.csdn.net/images/p_blog_csdn_net/jaketseng/e11.jpg" alt=""/>
            </p>
<p>我们很高兴发现，基本上在Controller_Default里面要写的都写好了。</p>
<p>我们只要改require_once成Flea的LoadClass就可以。</p>
<p>也就是按照FleaPHP就一些方式去改一点点就OK了。</p>
<p>
              <strong>第八步，我们生成Model_GB代码</strong>
            </p>
<p>也要注意路径和文件名(文件名是GB.php，里面的类名是Model_GB)</p>
<p>
              <img src="http://p.blog.csdn.net/images/p_blog_csdn_net/jaketseng/e12.jpg" alt=""/>
            </p>
<p>效果是：</p>
<p>
              <img src="http://p.blog.csdn.net/images/p_blog_csdn_net/jaketseng/e13.jpg" alt=""/>
            </p>
<p>同Controller_Default，我们的Model_GB也要小改一下，然后我们的Model_GB也可以了。</p>
<p>
              <br/>
到这里，整个留言本应用，基本上已经差不多了。</p>
<p>另外看看，我们生成的代码，也可以直接到EA里面去编辑。那会更方便。</p>
<p>
              <strong>编辑Controller_Default代码</strong>
            </p>
<p>
              <strong>
                <img src="http://p.blog.csdn.net/images/p_blog_csdn_net/jaketseng/e14.jpg" alt=""/>
              </strong>
            </p>
<p>
              <strong>编辑Model_GB代码</strong>
            </p>
<div class="clear">
              <img src="http://p.blog.csdn.net/images/p_blog_csdn_net/jaketseng/e15.jpg" style="WIDTH: 494px; HEIGHT: 371px" height="371" alt="" width="494"/>
            </div>
</div>
</div>
<p>
          <br/>
<br/>
        </p>
<div id="blog_related_posts">
<h3>本blog相关文章</h3>
<ul id="my_related_posts">
<li style="LIST-STYLE-TYPE: none">
              <span style="FONT-SIZE: 0.6em">from tag</span> <a href="http://del.icio.us/jakezzz/%C3%A8%C2%BD%C2%AF%C3%A4%C2%BB%C2%B6%C3%A5%C2%B7%C2%A5%C3%A7%C2%A8%C2%8B">
                <span style="FONT-SIZE: 0.75em">软件工程</span>
              </a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2008/01/04/2025133.aspx">Java开发为什么需要UML?</a>
<br/>
<span style="FONT-SIZE: 0.6em">from tag</span> <a href="http://del.icio.us/jakezzz/PHP">
                <span style="FONT-SIZE: 0.75em">PHP</span>
              </a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850018.aspx">PHP大潮将至 PHP近年发展分析</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850017.aspx">五种常见的PHP设计模式</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850015.aspx">PHP企业级应用-Zend 公司解决方案</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850039.aspx">PHP胜出--金山在线的选择</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850040.aspx">10个重要的PHP网络信息函数说明</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850067.aspx">用Enterprise Architect with FleaPHP 直接写代码真爽</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850098.aspx">Select Union all 怎样对记录进行区分</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850093.aspx">另一种的无限分类法</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850092.aspx">MySQL 数据类型</a>
<br/>
<span style="FONT-SIZE: 0.6em">from tag</span> <a href="http://del.icio.us/jakezzz/architect">
                <span style="FONT-SIZE: 0.75em">architect</span>
              </a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850066.aspx">[UML复习之二]类图</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850065.aspx">[UML复习之一]用例图</a>
<br/>
            </li>
</ul>
</div>
<div id="blog_hot_posts">
<h3>本blog评论最多文章</h3>
<ul>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850027.aspx">Frontpage的下一代，Microsoft Expression Web(2)</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850047.aspx">[分享]出气游戏(1)</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850039.aspx">PHP胜出--金山在线的选择(1)</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2008/01/05/2026353.aspx">自我参考：Java学习的30个目标(1)</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2008/01/05/2026349.aspx">jsp的跳转总结(1)</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2008/02/02/2078108.aspx">Java联盟2008新年寄语(0)</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2008/01/28/2069309.aspx">【视频】福星小子(0)</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2008/01/28/2069292.aspx">【视频】罗宾汉大冒险 - 经典(0)</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2008/01/24/2062717.aspx">生日的QQ群：1983年1月30日(0)</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2008/01/19/2052438.aspx">交际场上必须学会的２８件事(0)</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2008/01/19/2052439.aspx">应届生：求职必看的十部电影(0)</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2008/01/08/2030365.aspx">对创业者的10条实用告诫(0)</a>
            </li>
</ul>
</div>
<div id="blog_related_tags">
<h3>本文相关tags</h3>
<ul id="my_related_tags">
<li>
              <a href="http://del.icio.us/jakezzz/%C3%A8%C2%BD%C2%AF%C3%A4%C2%BB%C2%B6%C3%A5%C2%B7%C2%A5%C3%A7%C2%A8%C2%8B">
                <span style="FONT-SIZE: 0.6em">软件工程</span>
              </a>
            </li>
<li>
              <a href="http://del.icio.us/jakezzz/PHP">
                <span style="FONT-SIZE: 0.6em">PHP</span>
              </a>
            </li>
<li>
              <a href="http://del.icio.us/jakezzz/architect">
                <span style="FONT-SIZE: 0.6em">architect</span>
              </a>
            </li>
</ul>
</div>
<div id="blog_random_posts">
<h3>本blog随机文章</h3>
<ul id="my_random_posts">
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850113.aspx">怀念！智能配机专家 MayDiyer v1.0 - 收录该软件的网站列表</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850112.aspx">遇ARP病毒攻击</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2008/01/19/2052439.aspx">应届生：求职必看的十部电影</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850022.aspx">小知识：根服务器，SNS网站及中国Web信息博物馆</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850058.aspx">解决任务拦混乱及开不了Flash的情况</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850042.aspx">使用PHP快速生成Flash动画</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850078.aspx">【自制】Redhat9 Linux 安装过程录像</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850084.aspx">1994-2007！微软主页演变欣赏[图]</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850088.aspx">当你给女友脱衣服的时候</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850091.aspx">卫斯理系列简介(三)</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850110.aspx">拥有自己的ToolBar -- 好玩的自定义工具条哦</a>
            </li>
<li>
              <a href="http://blog.csdn.net/jaketseng/archive/2007/10/28/1850063.aspx">深圳：香港人中下阶层的后花园</a>
            </li>
</ul>
</div>
<p>
          <br/>
        </p>
<img src ="http://www.phpweblog.net/jake/aggbug/2850.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/jake/" target="_blank">jake</a> 2008-02-28 11:50 <a href="http://www.phpweblog.net/jake/archive/2008/02/28/2850.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>