为了账号安全,请及时绑定邮箱和手机立即绑定

如何优化php代码结构

如何优化php代码结构

ibeautiful 2019-04-16 20:26:13
每次调用方法后,都需要验证返回值来决定返回还是继续执行,以下代码如何调整会好些?/***执行业务逻辑*@param$action执行方法*@param$allParams*@returnarray|bool*/publicstaticfunctionparseMore($action,$allParams){//用户登录请求数据解析$inputs=self::userLoginParse($allParams);//验证if(self::$_errorNo!=StatusCode::STATUS_TRUE)returnarray();if($inputs===false)returnfalse;//调用业务方法$result=call_user_func(array("Frontier",strtolower($action)),$inputs);//验证if(self::$_errorNo!=StatusCode::STATUS_TRUE)returnarray();if($result===false)returnfalse;returnarray($action=>$result);}
查看完整描述

2 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

这个场景下应该使用异常而不是返回值。
包括userLoginParse和那个call_user_func的动态方法,看上去都在用self::$_errorNo传递错误状态,这是连C/C++都不推荐的糟糕模式(全局变量传递错误码)
这段代码或许应该长这样
publicstaticfunctionparseMore($action,$allParams)
{
try{
$inputs=self::userLoginParse($allParams);
}catch(EmptyInputException$e){
returnarray();
}
$result=call_user_func(array("Frontier",strtolower($action)),$inputs);
returnarray(
$action=>$result
);
}
或许应该长这样
publicstaticfunctionparseMore($action,$allParams)
{
$inputs=self::userLoginParse($allParams);
if($inputs===null){
returnarray();
}
$result=call_user_func(array("Frontier",strtolower($action)),$inputs);
returnarray(
$action=>$result
);
}
取决于那个returnarray();的分支和userLoginParse的业务
我通常判断一个函数返回bool是否合理是这样判断的
a)bool和其他类型混合:一定不合理。比如题主这种场景应该用异常,比如查询XXX返回对象/false应该用null
b)看函数名字,如果不能改叫isXXX,hasXXX等回答是否的疑问句,八成有问题
                            
查看完整回答
反对 回复 2019-04-16
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

我会考虑如下2个方法:
1、把检查的地方剥离出来,单独写个方法,用来检查$_errorNo和返回值
2、在调用的方法里,抛出异常而不是returnfalse,然后外面catch住,根据异常的code来判断返回false还是空数组
                            
查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 365 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信