php简单的MVC(含源码)

作者: 欧巴冰冰 | 来源:发表于2016-12-14 10:44 被阅读291次

    项目结构:
    统一入口文件
    引入配置
    引入类
    自动加载类
    根据参数自动跳转至控制器

    C 控制器: 业务逻辑 负责跳转页面
    M 模型类: 主要操作数据库,列表,详情,修改,添加等
    V 试图: 负责显示数据

    目录结构:
    Common 公共文件
    Lib 用到的类库
    Controller 所有控制器
    Model 所有模型
    View 所有视图
    index.php 项目入口

    一般情况下, 一个表对应一个控制器可一个模型类,视图可能有很多个
    源代码下载

    截图
    
    <?php
    
    // 统一入口文件
    
    // 定义项目路径
    define('BASE_PATH', __DIR__);
    define('BASR_URL', "{$_SERVER['SERVER_NAME']}/demo/Blog");
    
    // 引入核心类
    require BASE_PATH . '/Common/config.php'; // 引入项目的配置
    require BASE_PATH . '/Common/fun.php';// 引入工具相关(自动加载,路由跳转)
    require BASE_PATH . '/Common/Tools.php';// 项目需要用到的工具方法
    
    
    
    //路由跳转
    
    
    // D($_REQUEST);
    // 路由控制跳转至控制器 
    if(!empty($_REQUEST['r']))
    {
        // r=user/list
        $r = explode('/', $_REQUEST['r']);
        list($controller,$action) = $r;
        $controller = "{$controller}Controller"; // UserController
        $action = "action{$action}"; //actionList
        
        // D($controller);
        // D($action);
      
        // $controllerObj = new UserController();
        // $data = $controllerObj->actionlist();
    
        if(class_exists($controller))
        {
            if(method_exists($controller,$action))
            {
                // 回调这个函数
                $data = call_user_func(array( (new $controller), $action));   
            }
            else
            {
                die("{$controller}类不存在此函数{$action}");
            }
        }
        else
        {
            die("{$controller}类不存在");
        }
        
    }
    
    
    
    
    // 注册自动加载
    if(!file_exists('user_aotu_load'))
    {
        function user_aotu_load($className)
        {
            $classPath = 'Lib';
            // var_dump(strrpos($className, 'Controller') );
            if(strrpos($className, 'Controller') !== FALSE )
            {
                $classPath = 'Controller';
            }
            else if(strrpos($className, 'Model') !== FALSE )
            {
                $classPath = 'Model';
            }
            // D($classPath);
            $classPath = BASE_PATH . "/{$classPath}/{$className}.php";
            // D($className);
            // D($classPath);
            // var_dump(file_exists($classPath));
            if(file_exists($classPath))
            {
                include $classPath;
            }
            // exit;
        }
        spl_autoload_register('user_aotu_load');
    }
        
    ?>
    
    

    源代码下载

    __各位同学感觉不错的记得给个喜欢 __

    相关文章

      网友评论

        本文标题:php简单的MVC(含源码)

        本文链接:https://www.haomeiwen.com/subject/qxkimttx.html