在我的班级AController
中,我有以下方法:
private function determineRequestMethod()
{
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$this->requestMethod = AController::POST;
}
else
{
$this->requestMethod = AController::GET;
}
}
从构造函数调用此方法。 POST
和GET
是类常量,requestMethod
是类变量。
PS - $_SERVER['REQUEST_METHOD']
可以在我的服务器上运行。
我已更新方法以专门检查GET
并在请求方法不是GET
或POST
时抛出异常:
private function determineRequestMethod()
{
if($_SERVER['REQUEST_METHOD'] == AController::POST)
{
$this->requestMethod = AController::POST;
}
else if($_SERVER['REQUEST_METHOD'] == AController::GET)
{
$this->requestMethod = AController::GET;
}
else
{
throw new Exception('Unexpected request method [' . $_SERVER['REQUEST_METHOD'] . '].');
}
}
答案 0 :(得分:2)
是的,这是可行的,你实际上可以这样做:
private function determineRequestMethod()
{
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$this->requestMethod = AController::POST;
}
elseif($_SERVER['REQUEST_METHOD'] == 'GET')
{
$this->requestMethod = AController::GET;
}
}
如果您的课程也支持其他方法,您可能希望将其置于else
条件,否则您的代码就可以了。
PS - $ _SERVER ['REQUEST_METHOD']确实如此 在我的服务器上工作。
它也应该在其他地方工作:)
答案 1 :(得分:1)
我不知道在PHP中检查请求方法的任何其他方法,所以我会说它是。你可能想要注意像HEAD和其他HTTP动词这样的东西 - 将它们全部视为GET可能不是你想要的。
答案 2 :(得分:-1)
为什么PHP中有一个优秀的原生输入过滤器会使生活变得复杂:filter_input()。