PHP核心编程-MVC

概念

MVC是一种设计思想,一个项目由三部分构成:

  • M(model):模型层,用来操作数据的
  • V(view):视图层,用来显示数据
  • C(Controller):控制器层,用来执行业务逻辑(调度数据和视图)

在这里插入图片描述

优点:

  • 多人合作方便
  • 代码重用性好
  • 程序健壮性好
  • 项目维护容易方便

模型类

1、一个表就是一个模型类
2、模型类以Model结尾,比如产品表product对应的模型类是productModel

基础模型类

每个表的模型类都需要连接数据库,我们可以将连接数据库的代码封装到所有模型的父类中(基础模型类)。
在这里插入图片描述

控制器

1、一个功能就是一个控制器(取数据,丢页面显示)
2、控制器必须以Controller结尾
3、控制器中的方法以Action结尾
4、通过传递参数的方法请求分发
我们用c表示控制器,a表示方法

控制器工作原理:
所有访问都是请求index,而控制器中则是存在多个页面
如何分发到相应的控制器的功能当中
在这里插入图片描述


框架搭建

框架文件夹
在这里插入图片描述

定义路由:

class Framework{
   //定义路径常量 
    public static function initConst(){
        define('DS',DIRECTORY_SEPARATOR);
        define('ROOT_PATH',getcwd().DS);
        define('APP_PATH',ROOT_PATH.'Application'.DS);
        define('FRAMEWORK_PATH',ROOT_PATH.'Framework'.DS);
        define('PUBLIC_PATH',ROOT_PATH.'Public'.DS);
        define('CONFIG_PATH',APP_PATH.'Config'.DS);
        define('CONTROLLER_PATH',APP_PATH.'Controller'.DS);
        define('MODEL_PATH',APP_PATH.'Model'.DS);
        define('VIEW_PATH',APP_PATH.'View'.DS);
        define('CORE_PATH',FRAMEWORK_PATH.'Core'.DS);
        define('LIB_PATH',FRAMEWORK_PATH.'Lib'.DS);
    }
    //导入配置文件
    public static function initConfig(){
        $GLOBALS['config']=require CONFIG_PATH.'config.php';
    }
    //确定路由
    public static function initRoutes(){
        $p=isset($_REQUEST['p'])?$_REQUEST['p']:$GLOBALS['config']['app']['default_platform'];
        $c=isset($_REQUEST['c'])?$_REQUEST['c']:$GLOBALS['config']['app']['default_controller'];
        $a=isset($_REQUEST['a'])?$_REQUEST['a']:$GLOBALS['config']['app']['default_action'];
        define('PLATFORM_NAME',$p);
        define('CONTROLLER_NAME',$c);
        define('ACTION_NAME',$a);
        define('__URL__',CONTROLLER_PATH.PLATFORM_NAME.DS);
        define('__VIEW__',VIEW_PATH.PLATFORM_NAME.DS);
    }
}
Framework::initConst();
Framework::initConfig();
Framework::initRoutes();

自动加载类

先在框架类中写一个加载类的函数

public function autoLoad($class_name){
     $class_map=array(
         'MySQLDB' => CORE_PATH.'MySQLDB.class.php',
         'Model' => CORE_PATH.'Model.class.php',
     );
    if(isset($class_map[$class_name])){
        require $class_map[$class_name];
    }  
    elseif(substr($class_name,-5)=='Model'){
        require MODEL_PATH.$class_name.'.class.php';
    }
    elseif(substr($class_name,-10)=='Controller'){
        require __URL__.$class_name.'.class.php';
    }
}

再注册一下自动加载类的函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值