我有一个在前端和后端之间传递JSON的项目。因此,前端PHP将生成语句{ "command" : "getuser", "parameters" : { "userid" : 1 } }
并将其发送到后端。后端然后执行
if ($command == 'getuser') {
validate($parameters['userid']);
if ($this->valid) { <<get the user>> }
}
验证检查变量并设置$this->valid
。如有必要,它会创建一条错误消息。我希望在前端传入{ "command" : "getuser", "parameters" : "" }
时创建错误消息。在这种情况下,$parameters['userid']
永远不会被设置,而validate()会抱怨它被传递了一个未设置的变量。
我想出了两个解决方案。第一个解决方案是在加载JSON之前设置$parameters['userid'] = "unset"
,然后在验证器中检查它。另一种解决方案是使用
if (isset($parameters['userid'])) {
validate($parameters['userid']);
}
else {
echo("Error"); }
如果validate()
可以自己弄清楚变量是否存在,那就太好了。我应该采取更优雅的方式做事吗?
答案 0 :(得分:1)
简而言之,没有。错误发生在,而不是在调用validate()之后,因此无法拦截它。
听起来更好的解决方案是拥有一个在整个$ parameters变量中传递的validateUser()函数,然后根据'user_id'进行检查。这使您可以进一步区分您的疑虑(验证和响应)。
答案 1 :(得分:0)
如果你想要这种代码,你可以通过引用将arg传递给函数 如果没有,请尝试使用此验证($ parameters,'userid');
答案 2 :(得分:0)
您必须将$parameters
传递给validate
并让它检查userid
是否存在,如果没有,则创建错误消息。