请教mvc架构的问题

leetow2006 2021-01-14 01:09:11
MVC把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),
控制器要获取客户端发出的请求,并把它交给模型处理。
现在我想用MVC架构写个简单的登录系统,我有几个问题请教下:
1、登录界面是用html写的,这个登录界面文件是在控制器被调用吗?如果是,是在控制器
的开头调用吗?是用require来调用吗?
2、index.php是入口文件,能在这个文件中调用登录界面吗?
3、如果可以,哪位能提供这样的源代码?我想学习下。
...全文
303 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
leetow2006 2021-01-18
  • 打赏
  • 举报
回复
好的,非常感谢!
xuzuning 2021-01-17
  • 打赏
  • 举报
回复
是这样子的!
xuzuning 2021-01-17
  • 打赏
  • 举报
回复
是这样子的!
xuzuning 2021-01-16
  • 打赏
  • 举报
回复
所有功能文件都在入口文件口人调用
leetow2006 2021-01-16
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
所有功能文件都在入口文件口人调用

那也就是说一开始的登录界面文件也是在入口文件中被调用的,是吗?
下雨的声音丶 2021-01-16
  • 打赏
  • 举报
回复
入口都是index.php,至于怎么到控制器的,你可以跟踪一下代码 其实就是框架底层拿到 路由,然后解析成模块,控制器,方法,然后 实例化 控制器,调用对应的方法,然后在这个方法里面就可以调用模型来操作数据,再调用视图返回就行了 。你可以找一个简单点的mvc框架 然后跟踪代码一步一步的打断点调试,就知道了 你可以看看 https://www.imooc.com/learn/236 这个教程,讲了很多设计模式,和实现了一个简单的mvc框架
leetow2006 2021-01-15
  • 打赏
  • 举报
回复
请问一开始的登录界面文件是在哪被调用?是在入口的index.php中吗?如果不是,在哪?控制器是负责接收客户端发出的请求,所以我搞不清楚登录界面文件是怎么被控制器接收请求的,原来自己写的时候(不是用mvc架构),开始就是登录界面文件,然后点击时就被链接(用 a href)到后台的另一个文件,可是到了想用mvc架构时,就不知道该怎么做了,哪位能说说?
qq_39047451 2021-01-14
  • 打赏
  • 举报
回复
就两个东西:include,extract
访问C 然后include M和V ,extract数据到V
渡目成书 2021-01-14
  • 打赏
  • 举报
回复
简单的可以参考TP3,就是在入口文件自己定义下怎么根据url找到自己的控制器,控制器里面使用模型和视图
<?php
//项目路径
defined('APP_PATH') or define('APP_PATH', getcwd() . '/app');
define('CONTROLLERS_PATH', APP_PATH . '/controllers');
define('MODELS_PATH', APP_PATH . '/models');
define('VIEWS_PATH', APP_PATH . '/views');


//当前访问的 模块、控制器、方法
$m = isset($_GET['m']) ? $_GET['m'] : 'home';
$c = isset($_GET['c']) ? $_GET['c'] : 'index';
$a = isset($_GET['a']) ? $_GET['a'] : 'index';

define('MODULE_NAME', $m);
define('CONTROLLER_NAME', $c);
define('ACTION_NAME', $a);


//自动加载
function autoload($class_name)
{
    $type = substr($class_name, -10) == 'Controller' ? 'controller' : 'model';

    if ($type == 'controller') {

        //模块名
        $module = substr($class_name, 0, -10) == 'Common' ? '' : "/" . MODULE_NAME;

        //控制器名
        $controller_name = '/' . strtolower(substr($class_name, 0, -10)) . '_controller.php';

        //控制器完整路径
        $file = CONTROLLERS_PATH . $module . $controller_name;
    }

    if ($type == 'model') {
        $name = strtolower(substr($class_name, 0, -5));
        $file = MODELS_PATH . "/{$name}_model.php";
    }

    if (file_exists($file)) {
        require $file;
    }
}

//注册自动加载
spl_autoload_register("autoload");


$controller_name = ucfirst($c) . 'Controller';
$controller = new $controller_name;
$controller->$a();

/*
 * 实例化公共模型
 */
function M($table)
{
    return new CommonModel($table);
}

/*
 * 实例化自定义的模型
 */
function D($table)
{
    $model = ucfirst($table) . 'Model';
    return new $model($table);
}

/**
 * 读取配置文件
 * @param $key
 * @return mixed
 */
function C($key)
{
    $config = require getcwd() . '/config/common.php';
    return $config["$key"];
}

function dump($array)
{
    echo "<pre>";
    print_r($array);
    echo "</pre>";
}
leetow2006 2021-01-14
  • 打赏
  • 举报
回复
源代码太多了,我是想自己写一个简单的系统,遇到的第一个问题就是登录的问题,所以才上来问
Stephen_112 2021-01-14
  • 打赏
  • 举报
回复
直接去clone一个thinkphp代码直接学习就ok,MVC模式不是单纯的一个PHP文件,入口文件说白了就是初始化了一些文件的路径,执行框架最核心的方法,这个方法去调用其他的框架中的代码(配置文件,路由,模板引擎等等),框架有自己的路由规则,所有的访问地址都由路由来帮你组织,视图是由模板引擎去渲染的。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧