你可能要纠正这5个PHP编码小陋习!

在做过大量的代码审查后,我经常看到一些重复的错误,以下是纠正这些错误的方法。 一:在循环之前测试数组是否为空$items=[];//…if(count($items)&…

5f61caef51427.jpg

在做过大量的代码审查后,我经常看到一些重复的错误,以下是纠正这些错误的方法。

一:在循环之前测试数组是否为空$items=[];//…if(count($items)>0){foreach($itemsas$item){//processon$item…}}

foreach 以及数组函数 (array_*) 可以处理空数组。

不需要先进行测试

可减少一层缩进

$items=[];//…foreach($itemsas$item){//processon$item…}二:将代码内容封装到一个 if 语句汇总functionfoo(User$user){if(!$user->isDisabled()){//…//longprocess//…}}

这不是 PHP 特有的情况,不过我经常碰到此类情况。你可以通过提前返回来减少缩进。

所有主要方法处于第一个缩进级别

functionfoo(User$user){if($user->isDisabled()){return;}//…//其他代码//…}三:多次调用 isset 方法

你可能遇到以下情况:

$a=null;$b=null;$c=null;//…if(!isset($a)||!isset($b)||!isset($c)){thrownewException("undefinedvariable");}//或者if(isset($a)&&isset($b)&&isset($c){//processwith$a,$bet$c}//或者$items=[];//…if(isset($items['user'])&&isset($items['user']['id']){//processwith$items['user']['id']}

我们经常需要检查变量是否已定义,php 提供了 isset 函数可以用于检测该变量,而且该函数可以一次接受多个参数,所以一下代码可能更好:

$a=null;$b=null;$c=null;//…if(!isset($a,$b,$c)){thrownewException("undefinedvariable");}//或者if(isset($a,$b,$c)){//processwith$a,$bet$c}//或者$items=[];//…if(isset($items['user'],$items['user']['id'])){//processwith$items['user']['id']}四:echo和sprintf方法一起使用$name="JohnDoe";echosprintf('Bonjour%s',$name);

这段代码可能在微笑,但是我碰巧写了一段时间。而且我仍然看到很多!不用结合echo和sprintf,我们可以简单地使用printf方法。

$name="JohnDoe";printf('Bonjour%s',$name);五:通过组合两种方法检查数组中是否存在键

$items=['one_key'=>'John','search_key'=>'Jane',];if(in_array('search_key',array_keys($items))){//process}

我经常看到的最后一个错误是in_array和array_keys的联合使用。所有这些都可以使用array_key_exists替换。

$items=['one_key'=>'John','search_key'=>'Jane',];if(array_key_exists('search_key',$items)){//process}

我们还可以使用isset来检查值是否不是null。

if(isset($items['search_key'])){//process}

产品猿社区致力收录更多优质的商业产品,给服务商以及软件采购客户提供更多优质的软件产品,帮助开发者变现来实现多方共赢;

日常运营的过程中我们难免会遇到各种版权纠纷等问题,如果您在社区内发现有您的产品未经您授权而被用户提供下载或使用,您可按照我们投诉流程处理,点我投诉

本文来自用户发布投稿,不代表产品猿立场 ;若对此文有疑问或内容有严重错误,可联系平台客服反馈;

部分产品是用户投稿,可能本文没有提供官方下下载地址或教程,若您看到的内容没有下载入口,您可以在我们产品园商城搜索看开发者是否有发布商品;若您是开发者,也诚邀您入驻商城平台发布的产品,地址:点我进入

如若转载,请注明出处:https://www.chanpinyuan.cn/42620.html;
(0)
上一篇 2023年5月7日
下一篇 2023年5月7日

相关推荐

发表回复

登录后才能评论
分享本页
返回顶部