zoukankan      html  css  js  c++  java
  • PHP面向对象之页面控制器

    <?php
    /*
        页面控制器模式:按我的理解就是将业务逻辑和视图分离开来(通常最简便的写法是php和html代码是混合在一个文件里面的),
    即一个业务逻辑文件对应一个视图文件。
        代码示例即注解如下:
    
    */
    //页面控制器模式
    
    
    namespace woocontroller;
    //业务逻辑文件 (文件名AddVenue.php)
    abstract class PageController {   //基类
        private $request;
        function __construct (){    
            $request = wooaseRequestRegistry::getRequest();        //通过注册表类获取一个处理用户请求信息的类
            if(is_null($request)){
                $request = new Request();
            }
            $this->request = $request;
        }
        
        abstract function process();
        
        function forward($resource){        //跳转
            include($resource);
            exit(0);
        }
        
        function getRequest(){
            return $this->request;
        }
    }
    
    
    class AddVenueController extends PageController { //这个类的作用就是向数据库写入一个venue数据(数据表结构类似:id,name)        
        function process(){
            try{
                $request = $this->getRequest();
                $name = $request->getProperty('venue_name');                //获取用户提交的venue的名称
                if(is_null($request->getProperty('submitted'))){            //判断是否表单提交,否的话跳转到add_nenue.php
                    $request->addFeedback("choose a name for the venue");    
                    $this->forward('add_nenue.php');                        
                } else if (is_null($name)){                                    //判断表单提交是否有name 
                    $request->addFeedback("name is a required field");    
                    $this->forward('add_venue.php');                        //跳转add_venue.php
                }        
                $venue = new woodomainVenue(null,$name);                    //创建对象便可将它添加到数据库,具体内部的业务逻辑不必深究。
                $this->forward("ListVenues.php");                            //添加成功后跳转ListVenues.php,即一个列表数据的显示界面    
            } catch(Exception $e){
                $this->forward('error.php');                                //跳转到一个错误界面            
            }
        }
    }
    
    $controller = new AddVenueController();                                    //执行这个类的process()方法
    $controller->process();
    
    ?>
    
    <?php 
    //视图文件 (文件名add_venue.php)
    require_once("woo/base/RequestRegistry.php");
    $request = wooaseRequestRegistry::getRequest();
    ?>
    <html>
    <head>
    <title>Add Venue</title>
    </head>
    
    <body>
        <h1>Add Venue</h1>
        <table>
        <tr>
            <td>
            <?php print $request->getFeedbackString('</td></tr><tr><td>')?>
            </td>
        </tr>
        </table>
        <form action="AddVenue.php" method="get">
            <input type="hidden" name="submitted" value="yes" />
            <input type="text" name="venue_name" />
        </form>
    </body>
    </html>
  • 相关阅读:
    Jquery中的this指向的是哪个对象?
    需要重新编辑
    关于CSS选择器优先级无冲突样式设置的展示
    在 CSS 中,width 和 height 指的是内容区域的宽度和高度
    关于正则表达式中分组的一些误解勘正以及String的replaceAll方法误解勘正
    关于informatica的Dynamic Lookup组件使用中遇到的一个问题的思考
    【转】Informatica Update 机制详解
    维度表和事实表的含义
    今天看IO流,复制word遇到的一个小问题
    小试下新博客,一个列传行的SQL
  • 原文地址:https://www.cnblogs.com/kerryw/p/6942449.html
Copyright © 2011-2022 走看看