分享几个 PHP 编码的最佳实践
? 始终使用大括号让我们看下面的代码: if (isset($condition) && true === $condition) echo 'this is a success'; 虽然正确,但是你再看看下面的代码 if (isset($condition) && true === $condition) foreach (range("A","Z") as $letter) echo $letter . PHP_EOL; echo 'this is a success';
依旧正确,但是 this is a success 最终只 echo 了一次,这可能是一个陷阱。 等等,我们在来看看将? $condition = false; if (isset($condition) && true === $condition) foreach (range("A","Z") as $letter) echo $letter . PHP_EOL; echo 'this is a success';
该程序依旧成功打印 this is a success。 这显然不是我们想要的结果,你现在知道为什么花括号很重要了吧? 省略括号通常会导致不良的副作用。此外,阅读代码要困难得多。所以应当将其改写成这样 $condition = false; if (isset($condition) && true === $condition) { foreach (range("A","Z") as $letter) { echo $letter . PHP_EOL; } echo 'this is a success'; }
跳过 else 部分在使用任何变量之前,最好对它进行初始化。考虑以下例子: if (isset($condition) && true === $condition) { $main = 'chocolate'; } else { $main = 'vanilla'; }
如果你认为上面例子 OK 的话,那么试着添加几个? if ($condition) { $main = 'chocolate'; $time = 2; } elseif($otherCondition)) { $main = 'strawberry'; $time = 3; } elseif($otherOtherCondition)) { $main = 'apple'; $time = 1; } else { $main = 'vanilla'; $time = 9; }
该代码显得很笨重。当你在? 试着这样做: $main = 'vanilla'; $time = 9; if ($condition) { $main = 'chocolate'; $time = 2; } elseif($otherCondition)) { $main = 'strawberry'; $time = 3; } elseif($otherOtherCondition)) { $main = 'apple'; $time = 1; }
这种方式,每个人都知道? 这种方式,每个人都知道 $main 和 $time 变量在接下来的代码中应该被定义,该代码似乎更具可读性。 ? 不要使用 @运算符? 在 PHP 中 @是一个错误控制操作符。它用于隐藏错误,但事实上没人希望如此。 相反,你应当试着捕获这些错误并使用错误日志记录。 @操作符有着极大的缺点,比如将任何调试变为噩梦或使代码运行更慢! 对于代码的每次运行,它都会调用 INI 设置以将 error_reporting 设为 0,并在这之后将其设回原始值。 它是如此耗费资源。我觉得完全不使用它才是更为安全的。 一些关于三元运算符的想法虽然三元运算符可能很方便,但代码有可能更加难以阅读。 不要过度使用三元运算符三元运算可用于简化 if-else 部分: $main = ($condition) ? "chocolate" : "vanilla";
含义如下: if ($condition) { $main = "chocolate"; } else { $main = "vanilla"; }
上面的例子是 ok 的,但我已经看到过如下的例子: $output = ($condition) ? ($otherCondition) ? 'ok' : 'ko' : 'unknown';
不建议链式或嵌套式地使用三元运算。 ? 谨慎使用『Elvis』运算符Elvis 运算符是一个特殊的运算符。 $foo = $bar ?: "baz"; ? 以上是指: $foo = $bar ? $bar : "baz";
可以这样写: if ($bar) { $foo = $bar; } else { $foo = "baz"; }
信不信由你,正如维基百科所说: “Elvis 运算符” 这个名字指的是这样一个事实:当它的符号?: 从侧面看时,就像是 埃尔维斯?普雷斯利 (Elvis Presley) 的一个表情符号和他的卷发。 请小心使用空合并运算符自从 PHP7 起,null 合并运算符?可以用了: 需要将三元运算符与?
因此: $result = isset($_GET['result']) ? $_GET['result'] : "default";
可以这样写: $result = $_GET['result'] ?? "default";
在尝试使用空合并操作符替换 ternaries 和 Elvis 操作符时要格外小心! 空合并运算符从不检查条件是否为真,而是检查您的 var 是否已设置而不为空 ( isset() 的概念)。 ? 综上? 我希望你喜欢这些编程技巧。我想说的最后一件事是:请不要为了简洁而牺牲了清晰度。 更多内容请访问 怎么从一名码农成为架构师的必看知识点:目录大全(持续更新)50W年薪挑战! ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |