PHP面向对象之页面控制器

2018-06-22 05:20:07来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

<?php
/*
    页面控制器模式:按我的理解就是将业务逻辑和视图分离开来(通常最简便的写法是php和html代码是混合在一个文件里面的),
即一个业务逻辑文件对应一个视图文件。
    代码示例即注解如下:

*/
//页面控制器模式


namespace woo\controller;
//业务逻辑文件 (文件名AddVenue.php)
abstract class PageController {   //基类
    private $request;
    function __construct (){    
        $request = \woo\base\RequestRegistry::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 \woo\domain\Venue(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 = \woo\base\RequestRegistry::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>

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:PHP文件操作,多行句子的读取,file()函数,file_get_contents()函

下一篇:php中的数组遍历的几种方式