最新的前提条件测试?
Up-to-date pre-condition testing?
我正在测试脚本上给定的 post 请求字段,该脚本可以从命令行调用,也可以通过 HTTP 作为 GET 或 POST 请求调用。因此,$_POST
可以是未定义的。有没有一种简单的方法可以重写这个语句?
if (isset($_POST) && isset($_POST['function']) && $_POST['function'] == "login"):
我可以用 @
-operator 抑制错误——这是不好的做法吗?
if (@$_POST['function'] == "login"):
我可以使用 PHP 7.0 的空合并运算符,但这引入了一个无用的文字,纯粹是为了抛出 false
:
if (($_POST['function'] ?? null) == "login"):
如果有帮助,您不需要同时进行 isset()
测试:
if (isset($_POST['function']) && $_POST['function'] == "login"):
如果未设置 $_POST
将正常工作。例如:
php > var_dump(isset($notset[123][456]));
bool(false)
php >
我还认为您对空合并运算符的使用是正确且干净的。
if (($_POST['function'] ?? null) == "login"):
这对我来说很棒。
您还可以将此逻辑抽象到某种类型的包装函数后面:
function getFunction()
{
return ($_POST['function'] ?? null);
}
或者,对于年龄较大的 PHP:
function getFunction()
{
return isset($_POST['function']) ? $_POST['function'] : null);
}
我正在测试脚本上给定的 post 请求字段,该脚本可以从命令行调用,也可以通过 HTTP 作为 GET 或 POST 请求调用。因此,$_POST
可以是未定义的。有没有一种简单的方法可以重写这个语句?
if (isset($_POST) && isset($_POST['function']) && $_POST['function'] == "login"):
我可以用 @
-operator 抑制错误——这是不好的做法吗?
if (@$_POST['function'] == "login"):
我可以使用 PHP 7.0 的空合并运算符,但这引入了一个无用的文字,纯粹是为了抛出 false
:
if (($_POST['function'] ?? null) == "login"):
如果有帮助,您不需要同时进行 isset()
测试:
if (isset($_POST['function']) && $_POST['function'] == "login"):
如果未设置 $_POST
将正常工作。例如:
php > var_dump(isset($notset[123][456]));
bool(false)
php >
我还认为您对空合并运算符的使用是正确且干净的。
if (($_POST['function'] ?? null) == "login"):
这对我来说很棒。
您还可以将此逻辑抽象到某种类型的包装函数后面:
function getFunction()
{
return ($_POST['function'] ?? null);
}
或者,对于年龄较大的 PHP:
function getFunction()
{
return isset($_POST['function']) ? $_POST['function'] : null);
}