简短的回答是“是”,较长的回答是“视情况而定”。
为什么需要验证?因为如果您有代码,如果与错误的参数一起使用,将删除wordpress(我知道这是一个非常糟糕的例子),那么您应该加倍确保它不是由某些DB损坏或更可能的错误过滤器触发的。
让我们看看这部处理特朗普领导下核武器状态的代码;)其中可以有“休眠”、“就绪”和“参与”的值。您可能认为这段代码足够了
switch ($nuclear_state) {
case \'dormant\':...
break;
case \'ready\':....
break;
default : fire();
}
希望没有一个头脑正常的人会在他的代码中使用核战争选项作为默认选项,但我希望这可以很好地说明这种风险。
您的代码应该是
switch ($nuclear_state) {
case \'dormant\':...
break;
case \'ready\':....
break;
case \'engaged\' : fire();
break;
default : exception(\'something is wrong with the system, notify admin\');
}
并简单地拒绝对不好的价值观采取行动。
这就是为什么您应该编写做事情的代码,而不是处理获取参数的代码。当你有一个API
function nuclear_state_change(string $state) {}
它可以很容易地验证这一点
$state
有意义,并以可移植的方式在所有可能导致调用的流(html、json、ajax、xml rpc)之间引发异常,并让调用方处理异常。
显然,调用方自己验证会更好,但编码中的小开销是完全值得的,尤其是在开发过程中,存储和发送错误值的情况会更多。
那么,为什么会有“视情况而定”的答案呢?如果您完全控制了系统,那么您已经审核了所有代码,并且在没有完全审核的情况下从未安装任何新插件或升级主题,这可能只是一种开销。但这可能只适用于小型非复杂的一次性项目。对于复杂的项目,在某个时间点更可能发生不好的事情,您不希望它被忽视。