php.MVC系列教程之处理流程

类别:网站制作 点击:0 评论:0 推荐:

        php.MVC框架由许多类组装而成,但是我们不必了解所有类的详细工作过程也可以使用这个框架,图2显示了我们使用该框架需要了解的一些核心组件。


                                                               图2

        从图2我们可以看到一个典型的Web浏览器的HTTP请求如何与我们应用程序框架的核心类进行交互,然后如何得到HTTP响应返回到Web浏览器。

        现在,让我们以一个实例来了解框架的处理流程。比如要查看公司销售报表,先在浏览器地址栏输入
http://www.myhost.com/mycompany/Main.php?do=salesReport 客户端便发送给php.MVC应用程序一个请求。应用程序框架的控制器处理这个请求,分析查询字符串,取出请求路径关键字。在这个实例中,路径为salesReport。后面我们将看到如何通过XML配置文件来配置必需的应用行为,绑定表单验证,业务逻辑处理和显示组件。
        如果我们想严格控制只有通过验证的人才能访问这个报表,则用户必须先输入基本的验证信息,通常是用户名和密码。为了限制只有通过了验证的用户才能访问该报表,这里用了一个被称作ActionForm的类,我们需要继承框架的ActionForm来定义自己的表单验证类,比如SalesActionForm,如下所示:
class SalesActionForm extends ActionForm { ... }.

        在SalesActionForm类里我们要检查用户是否可信任的以决定下一步动作。如果用户没有通过验证,我们将重定向到初始页面要求重新输入;如果他通过了验证,控制器会通过Action类来调用业务处理类。
我们通过继承框架Action类来进行自定义,比如SalesAction,如下所示:
class SalesAction extends Action { ... }.

        在XML配置文件中我们要定义请求与Action类的对应关系,这样控制器找到相应的Action类,这里调用SalesAction。在SalesAction类里我们能访问业务处理类和数据源。本例中我们从数据库中取得销售数据,制成报表格式。例如:我们创建一些对象,后面在销售报表模板中可以使用这些对象,如下所示:

 // Sales report items - per zone (individual object instances):
 $item1 = new Item('Northern Zone Sales' , $salesNorth);
 $item2 = new Item('Southern Zone Sales' , $salesSouth);
 ...
 
        当我们完成了销售报表,就要通过控制器指定显示组件显示出来。这是通过一个在XML配置文件中已经配置好的被称作Forward的对象的来完成,如下所示:
return $mapping->findForwardConfig('salesReportSuccess');

        Forward对象包含了销售报表模板的路径,比如salesReport.tpl,这也是在配置文件中定义。

        然后控制器将请求转向到ActionDispatcher,由它定向到指定的显示组件,在本例中是salesReport.tpl,在模板中通过访问先前定义对象和变量从而得到在SalesAction里准备好的数据。
        下面显示我们如何用phpTAL模板系统访问报表数据并生成显示视图,对象$item1我们用类变量$item1->value
   ...
<!-- // Sales report items - per zone (individual object instances): -->

<table class='salesTable'>
   <tr>
      <td class='salesItemDesc' tal:content="item1/salesNorth">
            Sales report->value will appear here</td>
   ...

        最后将处理结果通过HTTP发送到客户端浏览器,从而也就完成了整个处理过程。

本文地址:http://com.8s8s.com/it/it31364.htm