PHP深入解读MVC框架

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP深入解读MVC框架相关的知识,希望对你有一定的参考价值。

上节介绍了框架核心的核心启动类

本次了解Controller(控制器基类)、Model(模型基类)

Model.class.php

模型基类

被所有模型类继承,这里封装了Model类共用的方法,例如:数据库初始化连接、数据库操作的基本方法

<?php
    class Model{
        protected $db; //数据库连接对象
        protected $table; //表名
        protected $fields = array();  //字段列表

        //实例化时要求传入表名
        public function __construct($table){
            //读取配置文件中数据库配置项,创建数据库连接对象
            $dbconfig[‘host‘] = $GLOBALS[‘config‘][‘host‘];
            $dbconfig[‘user‘] = $GLOBALS[‘config‘][‘user‘];
            $dbconfig[‘password‘] = $GLOBALS[‘config‘][‘password‘];
            $dbconfig[‘dbname‘] = $GLOBALS[‘config‘][‘dbname‘];
            $dbconfig[‘port‘] = $GLOBALS[‘config‘][‘port‘];
            $dbconfig[‘charset‘] = $GLOBALS[‘config‘][‘charset‘];
            
            $this->db = new mysql($dbconfig);
            $this->table = $GLOBALS[‘config‘][‘prefix‘] . $table;
        }


        /**
         * 插入方法
         * @param string $tbName 操作的数据表名
         * @param array $data 字段-值的一维数组
         * @return int 受影响的行数
         */
        public function insert(array $data){
            return $this->db->insert($this->table,$data);
        }

            /**
         * 删除方法
         * @param string $tbName 操作的数据表名
         * @return int 受影响的行数
         */
        public function delete() {
            return $this->db->delete($this->table);
        }

            /**
         * 更新函数
         * @param string $tbName 操作的数据表名
         * @param array $data 参数数组
         * @return int 受影响的行数
         */
        public function update(array $data) {
            return $this->db->update($this->table,$data);
        }

            /**
         * 查询函数
         * @param string $tbName 操作的数据表名
         * @return array 结果集
         */
        public function select() {
            return $this->db->select($this->table);
        }

            /**
         * @param mixed $option 组合条件的二维数组,例:$option[‘field1‘] = array(1,‘=>‘,‘or‘)
         * @return $this
         */
        public function where($option) {
            $this->db->where($option);
            return $this;
        }

            /**
         * 设置排序
         * @param mixed $option 排序条件数组 例:array(‘sort‘=>‘desc‘)
         * @return $this
         */
        public function order($option) {
            $this->db->order($option);
            return $this;
        }

                /**
         * 设置查询行数及页数
         * @param int $page pageSize不为空时为页数,否则为行数
         * @param int $pageSize 为空则函数设定取出行数,不为空则设定取出行数及页数
         * @return $this
         */
        public function limit($page,$pageSize=null) {
            $this->db->limit($page,$pageSize);
            return $this;
        }
                /**
         * 设置查询字段
         * @param mixed $field 字段数组
         * @return $this
         */
        public function field($field){
            $this->db->field($field);
            return $this;
        }

    }

 Controller.class.php

控制器基类

所用控制器的基类,封装控制器共用的方法,例如:跳转、展示模板、给模板赋值、ajax返回、重定向等

<?php
    class Controller {
        public function jump($url,$message,$wait){
            if($wait == 0){
                header("Location:$url");
            } else {
                include CUR_VIEW_PATH . "message.html";
            }
            //要强制退出
            exit();
        }
    }

 

应用中,让BaseController继承Controller类,在BaseController中显示访问权限控制,后台所有控制器继承BaseController

所有Model类继承Model,在model层中实现对数据库的访问和数据处理。在控制器中实例化model模型,调用Model层方法访问数据库,并对返回数据进行处理(展示页面,或者返回数据)

以上是关于PHP深入解读MVC框架的主要内容,如果未能解决你的问题,请参考以下文章

深入了解php框架mvc设计模式的原理

编写PHP框架,深入了解MVC运行流程

手把手编写PHP框架 深入了解MVC运行流程

PHP开发一个属于自己MVC框架

php mvc框架的理解

php的tp框架和mvc有什么区别?