PHP变量请求方法

PHP变量请求方法,php,request,variable-variables,Php,Request,Variable Variables,我正在开发一个供个人使用的网络图书馆。我认为我会非常聪明,使用变量使我的库能够轻松地支持所有请求方法 我有: $request = '_' . $_SERVER['REQUEST_METHOD']; $request = $$request; 但我得到: 未定义变量:\u POST 打印到我的php错误日志 我只是好奇,我的想法在概念上是否有缺陷,以及为什么逻辑在以下情况下无法工作: $_a = 'b'; $b = '_a'; $c = $$b; 编辑: 以下方法确实有效: $request

我正在开发一个供个人使用的网络图书馆。我认为我会非常聪明,使用变量使我的库能够轻松地支持所有请求方法

我有:

$request = '_' . $_SERVER['REQUEST_METHOD'];
$request = $$request;
但我得到:

未定义变量:\u POST

打印到我的php错误日志

我只是好奇,我的想法在概念上是否有缺陷,以及为什么逻辑在以下情况下无法工作:

$_a = 'b';
$b = '_a';
$c = $$b;
编辑:

以下方法确实有效:

$request = $_SERVER['REQUEST_METHOD'] === 'POST' ? $_POST : $_GET;
副本:

为了解决这个问题,我做了:

$request = $GLOBALS['_' . $_SERVER['REQUEST_METHOD']];

您也可以在函数或类之外使用我的原始代码。

您收到的错误消息是正确的,没有像$\u POST这样的变量

$request = '_' . $_SERVER['REQUEST_METHOD'];
让我们假设$\u服务器['REQUEST\u METHOD']是“POST”,它将用于HTTP POST请求

因此$request==“\u POST”

i、 e.
$request=$\u POST


你到底想在这里实现什么?

就像我在帖子中说的那样,让它发挥作用:

$request=$GLOBALS[''.'.$'服务器['request\u方法']]

为什么?

因为$\u POST和$\u GET是全局变量,需要作为全局变量进行访问。在函数/类中,您通常会执行以下操作:

global $_POST;
使用前

您也可以在函数或类之外使用原始代码

在这种情况下更好的方法?

我的意图是支持多种请求方法。我不认为这适用于PUT/PATCH/DELETE等。我建议您使用:

$requestdata = fopen("php://input", "r");
见:


这可能不适用于仅url参数请求正文。不确定。(如果是这种情况,那么对于get请求,您可能希望使用$\u get

为什么使用忍者代码?可能是@VeeeneX的重复代码我使用此代码来支持多种请求方法。主要是get和POST,我不知道这是否适用于修补/放置/删除等。请注意我最近的回答,这可能是一种更好的方法it@deltababelTh我之所以神奇地这么做,是因为服务器可以处理多种请求方法。例如get和post
$requestdata = fopen("php://input", "r");