php - 用 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 以验证数据。
解决方案
推荐阅读
- php - 如果目标时间小于 PHP 中的当前时间,如何打印消息
- git - Git:查找未合并到特定远程分支的远程分支
- unix - 测试命令不在 Crontab 中运行
- javascript - 按出现等级排列数组元素
- javascript - 带有 url 列的网格 webix 单击
- docker-compose - Ansible 和 docker-compose pull / up -d
- ajax - Ajax 请求响应代码 419 甚至 csrf 令牌在请求中可用
- docker - Conflucent kafka docker compose 占满磁盘空间,如何配置?
- python - Python - 创建切片元组
- java - 我可以像 CRON 作业一样安排 Java Spring Cache 在每个小时的顶部过期吗?