PHP-GET和POST请求之间的区别

PHP-GET和POST请求之间的区别,php,post,get,Php,Post,Get,我设置PHP的方式是,所有内容都进入一个名为Router的中心文件。路由器获取一个参数操作并调用该方法 在Node.js中,可以有相同方法的get和post版本。我想知道,在PHP中是否可能出现类似的情况 基本上,我希望这种情况发生: 有一个add方法 第1页有添加按钮。“添加”按钮转到需要填写以添加项的表单-get请求。单击后,将调用add方法 第2页有另一个添加按钮。“添加”按钮现在使用表单数据插入,并添加一个项—post请求 现在,两者调用相同的方法,但在文件中定义了方法的get版本,并定

我设置PHP的方式是,所有内容都进入一个名为Router的中心文件。路由器获取一个参数操作并调用该方法

在Node.js中,可以有相同方法的get和post版本。我想知道,在PHP中是否可能出现类似的情况

基本上,我希望这种情况发生:

有一个add方法

第1页有添加按钮。“添加”按钮转到需要填写以添加项的表单-get请求。单击后,将调用add方法

第2页有另一个添加按钮。“添加”按钮现在使用表单数据插入,并添加一个项—post请求

现在,两者调用相同的方法,但在文件中定义了方法的get版本,并定义了方法的post版本


我想知道,如果没有两个名称不同的方法,这是否可行。

尝试使用
$\u REQUEST
。它是
$\u POST
$\u GET
的通用替代品

您可以使用
$\u服务器['REQUEST\u METHOD']
确定它是GET还是POST。原始尝试可能如下所示:

 function handle_request() {
   $action = $_REQUEST['action'];
   $verb = tolower($_SERVER['REQUEST_METHOD']);
   // create string representation of the function to call, eg. post_add, get_add
   call_user_func( $verb.'_.'$action, $_REQUEST);
   }

 }
如果不希望以不同的方式命名函数:

function add() {
  if (tolower($_SERVER['REQUEST_METHOD') == 'post') {
    // run the post version
  } else {
    // run the get version
  }
}

可以找到实现RESTAPI的完整示例:

这应该通过两种不同的方法来完成。原因是一个方法应该只做一件事。在您的情况下,如果我理解正确,您需要一个执行两个.Idk的方法…但是您可以有一个方法,然后区分您想要执行的操作(如果请求是GET或POST)并相应地处理它…在.NET中,您可以给出方法属性。因此,在该方法之上,您可以编写[GET]methodName和[POST]methodName。在PHP中有类似的东西吗?但是那样的话,我就不得不用不同的方法来命名函数。我想知道的是,如果像下面这样的东西是可能的:index.get()和index.post(),那么如果它是post-post就会被调用。我意识到我仍然需要用不同的名称来命名它,但这似乎更优雅。只是要理解:索引是一个类吗?不,它是一个方法。这就是为什么圆点是不可能的。在.NET中,您可以提供方法属性。因此,在该方法之上,您可以编写[GET]methodName和[POST]methodName。PHP中有类似的东西吗?我认为PHP方法没有这样的功能,尽管您可能对这个答案感兴趣。