时间:2021-05-18
在做过大量的代码审查后,我经常看到一些重复的错误,以下是纠正这些错误的方法。
foreach 以及数组函数 (array_*) 可以处理空数组。
不需要先进行测试可减少一层缩进
$items = [];// ...foreach ($items as $item) { // process on $item ...}这不是 PHP 特有的情况,不过我经常碰到此类情况。你可以通过提前返回来减少缩进。
所有主要方法处于第一个缩进级别
function foo(User $user) { if ($user->isDisabled()) { return; } // ... // 其他代码 // ...}你可能遇到以下情况:
$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']}看到这段代码你可能会想笑,不过我的确这样写了一段时间,而且我仍然会看到很多这样写的!其实 echo 和 sprintf 并不需同时使用,printf 就可以完全实现打印功能。
$name = "John Doe";printf('Bonjour %s', $name);我经常看到的最后一个错误是 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编码小陋习内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例总结了PHP+MySQL存储数据常见中文乱码问题。分享给大家供大家参考,具体如下:PHP+MySQL出现中文乱码的常见原因:1.MYSQL数据库的编码是
wzskynet#163.com·phpescapeshellcmd多字节编码漏洞·详细讲解PHP中缓存技术的应用·利用PHPV5开发多任务应用程序·详细解析P
本文实例讲述了PHP钩子实现方法。分享给大家供大家参考,具体如下:PHP编程的钩子实现,示例讲解和解释它们的作用,写了一个样板的钩子实现钩子是编程里一个常见的概
本文实例讲述了PHP实现获取ip地址的5种方法,以及插入用户登录日志操作。分享给大家供大家参考,具体如下:php获取ip地址的5种方法,插入用户登录日志实例,推
下面通过理论讲解,实例分析,效果展示的方式给大家分享下PHP定时执行任务实现方法。定时器任务,在WEB应用比较常见,如何使用PHP实现定时器任务,大致有两种方案