POST控制器适用于php mvc吗?

POST控制器适用于php mvc吗?,php,model-view-controller,class,Php,Model View Controller,Class,我正在从头开始创建一个定制的MVC风格的框架,现在我需要实现代码来控制POST上发生的事情 目前,我有一个main index.php,它充当控制器并将数据传递给其他控制器,例如: profilecontroller.class.php forumcontroller.class.php 目前,我看到了两个选项,即POST控制器可以去哪里 第一种方法 首先,对于任何页面上都可能出现的站点范围内的帖子,如登录,我会在第一个index.php中使用类似的方法将所有帖子重定向到特定的帖子控制器,然后将

我正在从头开始创建一个定制的MVC风格的框架,现在我需要实现代码来控制
POST
上发生的事情

目前,我有一个main index.php,它充当控制器并将数据传递给其他控制器,例如:

profilecontroller.class.php forumcontroller.class.php

目前,我看到了两个选项,即POST控制器可以去哪里

第一种方法

首先,对于任何页面上都可能出现的站点范围内的帖子,如登录,我会在第一个index.php中使用类似的方法将所有帖子重定向到特定的帖子控制器,然后将数据发送到要处理的模型:

if($_POST)
    //post controller, works on specific form id's
替代方法

我看到的另一个选项是将
POST
标识符构建到模型构造部分中,但我认为这不是很容易管理/明智的,因为它们总是被检查并导致加载更多的代码

有没有好的/简单的例子


我正在创建尽可能轻的mvc,这就是我从头开始的原因。

这是我的默认控制器:

<?php
Class Controller_Home{
    public $Registery = null;

    final public function __construct($Registery){ $this->Registery = $Registery; }

    final public function Init($Method=null){
        # Quelle action on fait ?
        if($Method){
            $Split = explode('_', $Method);

            $MethodName = 'Action';
            foreach($Split as $Splitted){
                $MethodName.= '_'.ucfirst($Splitted);
            }

            if(method_exists($this, $MethodName)){
                $this->$MethodName();
            } else {
                echo '404';
                die;
            }
        } else {
            $this->Action_Default();
        }
    }

    final public function Action_Default(){
        $this->Registery->Import('Library.Account');

        var_dump($this->Registery->Account);
        echo 'Default Home';
    }
}

这是我的默认控制器:

<?php
Class Controller_Home{
    public $Registery = null;

    final public function __construct($Registery){ $this->Registery = $Registery; }

    final public function Init($Method=null){
        # Quelle action on fait ?
        if($Method){
            $Split = explode('_', $Method);

            $MethodName = 'Action';
            foreach($Split as $Splitted){
                $MethodName.= '_'.ucfirst($Splitted);
            }

            if(method_exists($this, $MethodName)){
                $this->$MethodName();
            } else {
                echo '404';
                die;
            }
        } else {
            $this->Action_Default();
        }
    }

    final public function Action_Default(){
        $this->Registery->Import('Library.Account');

        var_dump($this->Registery->Account);
        echo 'Default Home';
    }
}

在RESTful设置中,您通常会有一个对象的控制器,比如说
新闻
,然后执行诸如
添加
编辑
删除
等操作

在您的操作中,您应该断言应该使用什么HTTP方法来访问该方法(如果应该的话)。例如:

<?php
class NewsController extends AbstractController {
    public function save() {
        if ($_SERVER['REQUEST_METHOD'] != 'POST') {
            header('HTTP/1.1 405 Method Not Allowed');
            die('Please use POST.');
        }
        // carry on knowing we're working with a POST request
    }
}

希望对您有所帮助。

在RESTful设置中,您通常会为一个对象设置一个控制器,比如说
news
,然后执行
add
edit
delete
等操作

在您的操作中,您应该断言应该使用什么HTTP方法来访问该方法(如果应该的话)。例如:

<?php
class NewsController extends AbstractController {
    public function save() {
        if ($_SERVER['REQUEST_METHOD'] != 'POST') {
            header('HTTP/1.1 405 Method Not Allowed');
            die('Please use POST.');
        }
        // carry on knowing we're working with a POST request
    }
}
希望有帮助

<?php
class HomeHandler {
    public function get() {
        echo 'Hello, world!';
    }
    public function post() {
        echo 'Try performing a GET request for the home page, buddy.';
    }
    // and so on...
}