当前位置: 首页 > 后端技术 > PHP

请纠正这 5 个 PHP 编码小陋习

时间:2023-03-29 22:01:22 PHP

请改正PHP编码方式的这5个坏习惯,改正这些错误。在循环之前测试数组是否为空$items=[];//...if(count($items)>0){foreach($itemsas$item){//处理$item...}}foreach和数组函数(array_*)可以处理空数组。不需要先测试减少一级缩进$items=[];//...foreach($itemsas$item){//processon$item...}将代码内容封装成一个ifstatementsummaryfunctionfoo(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");}//orif(isset($a)&&isset($b)&&isset($c){//使用$a,$bet$c处理}//或$items=[];//...if(isset($items['user'])&&isset($items['user']['id']){//处理$items['user']['id']}我们经常需要检查一个变量是否已经定义,PHP提供了一个isset函数可以用来检测这个变量,这个函数一次可以接受多个参数,所以下面的代码可能更好:$a=null;$b=null;$c=null;//...if(!isset($a,$b,$c)){thrownewException("undefinedvariable");}//orif(isset($a,$b,$c)){//使用$a,$bet$c处理}//or$items=[];//...if(isset($items['用户'],$items['用户']['id'])){//$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来检查值是否不为空。if(isset($items['search_key'])){//process}讨论请到专业的PHP论坛:https://learnku.com/php/t/49583