php代码结构,如何优化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

);

}

回复内容:

每次调用方法后,都需要验证返回值来决定返回还是继续执行,以下代码如何调整会好些?

/**

* 执行业务逻辑

* @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

);

}

这个场景下应该使用异常而不是返回值。

包括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还是空数组

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值