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");