在做过大量的代码审查后,我常常看到一些反复的错误,以下是更正这些错误的要领。
在轮回之前测试数组是否为空$items = []; // ... if (count($items) > 0) { foreach ($items as $item) { // process on $item ... } }
foreach 以及数组函数 (array_*) 可以处理惩罚空数组。
不需要先举办测试可淘汰一层缩进
$items = []; // ... foreach ($items as $item) { // process on $item ... }
将代码内容封装到一个 if 语句汇总function foo(User $user) { if (!$user->isDisabled()) { // ... // long process // ... } }
这不是 PHP 特有的环境,不外我常常遇到此类环境。你可以通过提前返返来淘汰缩进。
所有主要要领处于第一个缩升级别
function foo(User $user) { if ($user->isDisabled()) { return; } // ... // 其他代码 // ... }
多次挪用 isset 要领你大概碰着以下环境:
$a = null; $b = null; $c = null; // ... if (!isset($a) || !isset($b) || !isset($c)) { throw new Exception("undefined variable"); } // 可能 if (isset($a) && isset($b) && isset($c) { // process with $a, $b et $c } // 可能 $items = []; //... if (isset($items['user']) && isset($items['user']['id']) { // process with $items['user']['id'] }
我们常常需要查抄变量是否已界说,php 提供了 isset 函数可以用于检测该变量,并且该函数可以一次接管多个参数,所以一下代码大概更好:
$a = null;
$b = null;
$c = null;
// ...
if (!isset($a, $b, $c)) {
throw new Exception("undefined variable");
}
// 可能
if (isset($a, $b, $c)) {
// process with $a, $b et $c
}
// 可能
$items = [];
//...
if (isset($items['user'], $items['user']['id'])) {
// process with $items['user']['id']
}
$name = "John Doe"; echo sprintf('Bonjour %s', $name);
看到这段代码你大概会想笑,不外我简直这样写了一段时间,并且我仍然会看到许多这样写的!其实 echo 和 sprintf 并不需同时利用,printf 就可以完全实现打印成果。
$name = "John Doe"; 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 }
到此这篇关于常见的5个PHP编码小成规以及优化实例讲授的文章就先容到这了,更多相关常见的5个PHP编码小成规内容请搜索剧本之家以前的文章或继承欣赏下面的相关文章但愿各人今后多多支持剧本之家!
您大概感乐趣的文章: