当前位置:首页 > PHP文摘 > 列表

PHP编程一定要改掉的5个不良习惯

发布:smiling 来源: PHP粉丝网  添加日期:2022-03-27 09:57:15 浏览: 评论:0 

在项目的每一次提交之后,我都会进行大量代码审查,会经常看到一些重复出现的错误,以下这五个错误应该要及时纠正,这是纠正它们的方法。

这5个PHP编程中的不良习惯,一定要改掉 PHP世界上最好的语言!

测试循环前数组是否为空?

  1. $items = []; 
  2. // ... 
  3. if (count($items) > 0) { 
  4.  foreach ($items as $item) {  // process on $item ... 
  5.  }} 

foreach循环或数组函数(array_*)可以处理空数组。

不需要先进行测试

可以减少一层缩进

  1. $items = []; 
  2. // ... 
  3. foreach ($items as $item) { // process on $item ... 

将方法的所有内容封装在if语句中

  1. function foo(User $user) { 
  2.  if (!$user->isDisafunction foo(User $user) { 
  3.  if (!$user->isDisabled()) { 
  4.   // ... 
  5.   // long process 
  6.   // ... 
  7.  } 
  8. }bled()) { 
  9.   // ... 
  10.   // long process 
  11.   // ... 
  12.  } 

这不是特定于PHP的,但我经常看到它。你可以通过提前返回,来减少缩进级别的极简代码! 该函数的所有“有用”主体现在处于第一个缩进级别。

  1. function foo(User $user) { 
  2.  if ($user->isDisabled()) { 
  3.   return
  4.  } // ... 
  5.  // long process 
  6.  // ... 

多次调用isset方法

  1. $a = null; 
  2. $b = null; 
  3. $c = null; 
  4. // ... 
  5.  
  6. if (!isset($a) || !isset($b) || !isset($c)) { 
  7.  throw new Exception("undefined variable"); 
  8.  
  9. // or 
  10.  
  11. if (isset($a) && isset($b) && isset($c) { 
  12.  // process with $a, $b et $c 
  13.  
  14. // or  
  15.  
  16. $items = []; 
  17. //... 
  18. if (isset($items['user']) && isset($items['user']['id']) { 
  19.  // process with $items['user']['id'] 

我们经常需要检查是否已定义变量(而不是null),在PHP中,我们可以使用isset函数来做到这一点,而且该函数一次可以接受多个参数!

  1. $a = null; 
  2. $b = null; 
  3. $c = null; 
  4. // ... 
  5.  
  6. if (!isset($a$b$c)) { 
  7.  throw new Exception("undefined variable"); 
  8.  
  9. // or 
  10.  
  11. if (isset($a$b$c)) { 
  12.  // process with $a, $b et $c 
  13.  
  14. // or  
  15.  
  16. $items = []; 
  17. //... 
  18. if (isset($items['user'], $items['user']['id'])) { 
  19.  // process with $items['user']['id'] 

echo方法和sprintf结合使用

$name = "John Doe";

echo sprintf('Bonjour %s', $name);

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

$name = "John Doe";

printf('Bonjour %s', $name);

通过组合两种方法检查数组中键的存在

  1. $items = [ 
  2.  'one_key' => 'John'
  3.  'search_key' => 'Jane'
  4. ];if (in_array('search_key'array_keys($items))) { 
  5.  // process 

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

  1. $items = [ 
  2.  'one_key' => 'John'
  3.  'search_key' => 'Jane'
  4. ];if (array_key_exists('search_key'$items)) { 
  5.  // process 

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

  1. if (isset($items['search_key'])) { 
  2.  // process 
  3. }

Tags: PHP编程不良习惯

分享到: