如何优化php代码结构
每次调用方法后,都需要验证返回值来决定返回还是继续执行,以下代码如何调整会好些?
/**
* 执行业务逻辑
* @param $action 执行方法
* @param $allParams
* @return array|bool
*/
public static function parseMore($action, $allParams)
{
// 用户登录请求数据解析
$inputs = self::userLoginParse($allParams);
//验证
if(self::$_errorNo != StatusCode::STATUS_TRUE) return array();
if($inputs === false) return false;
// 调用业务方法
$result = call_user_func(array("Frontier", strtolower($action)), $inputs);
//验证
if(self::$_errorNo != StatusCode::STATUS_TRUE) return array();
if($result === false) return false;
return array(
$action => $result
);
}
- php curl 批量上传,并且带post 其它表单,多文件上传为什么不能再传其它post
- ESC/POS 打印中文字大小設定?
- 为什么str_replace返回的数据错误
- yii2 默认curd后,views 中模版文件显示问题
- js怎么计算一段文本的字节大小?
- Linux 服务器慢的问题
- node中如何比对Laravel加密过的密码
- 应该写代码还是做产品?就业很迷茫,请前辈们指导。
- segmentfault 编辑问题的部分 有什么好的实现办法
- 网站开发session cookie问题
- 使用atom开发PHP需要安装什么插件?
- 关于php foreach 的参数问题
- 大哥们再帮忙看看这个 java 2 php.
这个场景下应该使用异常而不是返回值。
包括userLoginParse
和那个call_user_func
的动态方法,看上去都在用self::$_errorNo
传递错误状态,这是连C/C++都不推荐的糟糕模式(全局变量传递错误码)
这段代码或许应该长这样
public static function parseMore($action, $allParams)
{
try {
$inputs = self::userLoginParse($allParams);
} catch(EmptyInputException $e) {
return array();
}
$result = call_user_func(array("Frontier", strtolower($action)), $inputs);
return array(
$action => $result
);
}
或许应该长这样
public static function parseMore($action, $allParams)
{
$inputs = self::userLoginParse($allParams);
if($inputs === null) {
return array();
}
$result = call_user_func(array("Frontier", strtolower($action)), $inputs);
return array(
$action => $result
);
}
取决于那个return array();
的分支和userLoginParse
的业务
我通常判断一个函数返回bool是否合理是这样判断的
a)bool和其他类型混合:一定不合理。比如题主这种场景应该用异常,比如查询XXX返回对象/false 应该用null
b)看函数名字,如果不能改叫isXXX,hasXXX等回答是否的疑问句,八成有问题
我会考虑如下2个方法:
1、把检查的地方剥离出来,单独写个方法,用来检查$_errorNo
和返回值
2、在调用的方法里,抛出异常而不是return false
,然后外面catch住,根据异常的code来判断返回false还是空数组