如何避免PHP实例代码中的一些坏代码(2)

public function index() { $res = $this->addNewUser(); if (is_array($res) && isset($res['error'])) { return isset($res['errormsg']) ? $res['errormsg'] : "未知错误"; } return "成功"; }

这样的代码几乎每一次调用完成这个函数都会有这一套出现,不仅代码不美观,而且很臃肿。

这样的代码需要改善,首先限制住函数的返回值。比如,我们只让这个函数返回bool类型的数:

public function addNewUser() { $res = $this->addData(); if ($res) { return true; } else { return false; } }

但是,显然,很多时候,我们要的不是简单的真价值,所以,我们会选择返回更多信息,这个时候,我们可以有三种处理方式。

1)返回int类型的数,然后通过这个int类型的数去判断处理结果,我们可以添加上映射关系:

class Operate{ public $operateRes = [ 0 => '成功', 1 => '添加失败', 2 => '未知错误', ]; public function addNewUser() { $res = $this->addData(); if ($res) { return 0; } else if ($res > 1) { return 1; } return 2; } }

这样方法的调用者就可以很简单的使用方法并给出提示了:

$opera = new Operate(); $res = $opera->addNewUser(); return $opera->operateRes[$res];

给出统一的返回值类型的时候就完全不需要判断返回值类型而且可以设置一个规范返回提示。

2)我们也可以使用数组

3)数组给人不缺定性,因为很多时候,数组里可以认为的少写一些元素,如果少写了,程序直接报错,很不好。

所以第三种方式就是建议将固定格式的返回,写成一个类,做返回的时候,使用这个类:

class Operate{ public function addNewUser() { $res = $this->addData(); $result = new Result(); if ($res) { $result->errno = 0; $result->errmsg = "成功"; } else if ($res > 1) { $result->errno = 1; $result->errmsg = "失败"; } $result->errno = 2; $result->errmsg = "未知错误"; return $result; } } class Result { public $errno; public $errmsg; }

这样的返回,保证了所有变量的存在,同样可以减少一次判断。

所以,综合以上,在我们返回结果的时候,尽量使用同种类型的变量,尽量减少使用数组返回。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/629c12846099a258c2f469163e567485.html