首页 > 解决方案 > 用 php 处理 MVC 模式中的请求

问题描述

我正在阅读这个关于如何在 php mvc 应用程序中管理表单提交的问题。

我正在尝试创建一个路由系统来了解有关 MVC 和 php 的更多信息,并且我想使用 RedBeanPHP 作为主要的 ORM。我不是 php 中的 mvc 模式的大师,所以我有以下代码应该在请求 url 时实例化相关控制器。有人可以向我展示一个没有框架的正确实现吗?另一个疑问是关于 RedBean。如果我在前端控制器上设置它,会在每个控制器上加载吗?

<?php

declare( strict_types = 1 );

require_once __DIR__.'/vendor/autoload.php';

use \RedBeanPHP\R;

$dbh = R::setup();

class Router {

  public static function init()
  {
    $uri = trim(parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH ), '/');
      if( $uri != '' ){
        list( $controller, $method, $args ) = explode( '/', $uri, 3 );
          $controller = ucfirst( $controller ).'Controller';
            if( class_exists( $controller ) ){
              if( !isset($args) ){
                call_user_func([new $controller, $method]);
              }
              call_user_func_array( new $controller, $method, [$args] );
            }
      }
      else{
        IndexController::index();
      }
  }

}


class IndexController {

  public static function index()
  {
    //include TEMPLATE_PATH.'/index.php';
    echo 'Hello index';
  }

}

class UserController {

  public function demo()
  { 
    //include TEMPLATE_PATH.'/test.php';
    echo 'Hello demo';
  }

}

?>

我不确定这是否是应用 mvc 模式的正确方法,这也是因为如果加载的视图模板中有一个表单,我不知道如何管理它,什么是正确<form action="" >的设置。这也是因为我将使用FUSE模型实现 redbean 以验证数据。

标签: phpmodel-view-controllerredbeanfront-controller

解决方案


推荐阅读