zoukankan      html  css  js  c++  java
  • php mvc实现比赛列表

    文件创建样式:

    new_file.php是入口文件,代码为:

    <?php
    //入口文件 被浏览器访问的
    spl_autoload_register('userAutoload');  //注册自动加载函数  自动加载函数不用主动调用 在需要的时候自动调用
    function userAutoload($classname){
        //定义确定的类和路径
        $class_list = array(
        'Controller' => FRAMEWORK_PATH.'Controller.class.php',
        'Factory' => FRAMEWORK_PATH.'Factory.class.php',
        'Model' => FRAMEWORK_PATH.'Model.class.php',
        'MySQLDB' => FRAMEWORK_PATH.'MySQLDB.class.php'
        );
        if(isset($class_list[$classname])){
            require $class_list[$classname];
        }elseif(substr($classname, -10) == 'Controller'){  //判断是否为控制器
            require CONREOLLER_PATH.$classname.'.class.php';
        }elseif(substr($classname, -5) == 'Model'){  //判断是否为模型类
            require MODEL_PATH.$classname.'.class.php';
        }
    }
    //目录地址常量
    define('ROOT_PATH', getcwd().'/');  //定义根目录
    define('APP_PATH',ROOT_PATH.'application/');
    define('FRAMEWORK_PATH',ROOT_PATH.'framework/');
    
    
    //控制器类
    $c = isset($_GET['c']) ? $_GET['c'] : 'Match';
    define("PLATFORM", isset($_GET['p']) ? $_GET['p'] : 'test');
    
    //动作
    $default_action = 'list';  //默认值
    $a = isset($_GET['a']) ? $_GET['a'] : $default_action;
    
    //平台相关路径常量
    define('CONREOLLER_PATH', APP_PATH.PLATFORM.'/controller/');
    define('MODEL_PATH', APP_PATH.PLATFORM.'/model/');
    define('VIEW_PATH', APP_PATH.PLATFORM.'/view/');
    
    
    //调用控制器
    $controller = $c.'Controller';
    
    //实例化对象
    $Match = new $controller();
    
    $action = $a.'Action';
    $Match->$action();

    不传参数时p默认为tese c默认为Match a默认为list

    实例化一个MatchController对象

    MatchController类代码为:

    <?php
    class MatchController extends Controller{
        function listAction(){
        //查询数据
        
        $match = Factory::getDx('MatchModel'); //用工厂类实例化MatchModel类对象
        //$match = new MatchModel();
        $arr = $match->getList();
        //调用模板
        require VIEW_PATH.'match_v.html';
        }
        function delAction(){
            $id = $_GET['id'];
            echo "id是:".$id."<br />";
            echo "比赛控制器的删除动作执行了";
    //        header('location:new_file.php');
        }
    }

    调用MatchController父类Controller(基础控制器)的构造函数

    <?php
    //基础控制器
    class Controller{
        function __construct(){
            $this->_initContentType();
        }
        function _initContentType(){
            header('Content-Type:text/html; charset=utf-8');
        }
        
        protected function _jump($url,$info=null,$wait=3){
            if($info == ''){
                header('location:'.$url);
            }else{
                header('refresh:'.$wait.';url='.$url);
                echo $info;
            }
            die;
        }
    }

    调用Factory类getDx方法实例化一个MatchModel对象:

    <?php
    //工厂类
    class Factory{
        /*判断模型对象有没有 有就直接返回 没有就new一个
        $model_list = array(
            'MatchModel' => new MatchModel()  键是类名,值是这个类的一个对象
        )*/
        static function getDx($className){  //$className可变类名
            static $model_list = array();
            if(!isset($model_list[$className])){
                
                $model_list[$className] = new $className;
            }
            return $model_list[$className];
        }
    }

    工厂类的作用就是单例模型类,传入类名,返回对象

    引入MatchModel类,继承Model(基础模型类),当new一个对象的时候,调用Model的构造函数,连接数据库,单例话一个MySQLDB对象存在$this->_dao中,MatchModel对象调用MatchModel方法,执行sql语句,调用视图层显示在页面上:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
            <table width="100%" border="1" cellpadding="0" cellspacing="0">
                <tr>
                    <th>队伍一</th>
                    <th>比分</th>
                    <th>队伍二</th>
                    <th>时间</th>
                </tr>
                <!--循环遍历-->
                <?php foreach($arr as $v){ ?>
                    <tr>
                        <td><a href="new_file.php?c=Team&a=list&id=1&tname=<?php echo $v['t1_name']; ?>"><?php echo $v['t1_name']; ?></a></td>
                        <td><?php echo $v['t1_score'].':'.$v['t2_score']; ?></td>
                        <td><?php echo $v['t2_name']; ?></td>
                        <td><?php echo date('Y-m-d H:i:s',$v['m_time']); ?></td>
                        <td><a href="new_file.php?a=del&id=1">删除</a></td>
                    </tr>
                <?php } ?>    
            </table>
        </body>
    </html>
  • 相关阅读:
    synchronized原理
    实现二叉搜索树
    2.oracle内存结构和后台进程02
    1.Oracle的内存结构和后台进程01
    15.Oracle的用户、Schema、数据库、表空间、数据文件的相互关系
    14.oracle的归档日志
    8.事务是隔离还是不隔离?
    7.行锁功过:怎么减少行锁对性能的影响?
    50.Mysql不完全恢复之innodb_force_recovery参数
    49.Mysql命令之Mysqlcheck
  • 原文地址:https://www.cnblogs.com/liangdong/p/10409166.html
Copyright © 2011-2022 走看看