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


Posted in PHP onSeptember 18, 2020

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

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

$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->isDisafunction foo(User $user) {
 if (!$user->isDisabled()) {
  // ...
  // long process
  // ...
 }
}bled()) {
  // ...
  // long process
  // ...
 }
}

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

function foo(User $user) {
 if ($user->isDisabled()) {
  return;
 } // ...
 // long process
 // ...
}

多次调用isset方法

$a = null;
$b = null;
$c = null;
// ...

if (!isset($a) || !isset($b) || !isset($c)) {
 throw new Exception("undefined variable");
}

// or

if (isset($a) && isset($b) && isset($c) {
 // process with $a, $b et $c
}

// or 

$items = [];
//...
if (isset($items['user']) && isset($items['user']['id']) {
 // process with $items['user']['id']
}

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

$a = null;
$b = null;
$c = null;
// ...

if (!isset($a, $b, $c)) {
 throw new Exception("undefined variable");
}

// or

if (isset($a, $b, $c)) {
 // process with $a, $b et $c
}

// or 

$items = [];
//...
if (isset($items['user'], $items['user']['id'])) {
 // process with $items['user']['id']
}

echo方法和sprintf结合使用

$name = "John Doe";
echo sprintf('Bonjour %s', $name);

这段代码可能在微笑,但是我碰巧写了一段时间。而且我仍然看到很多!除了结合echosprintf,我们可以简单地使用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_arrayarray_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
}

以上就是PHP编程一定要改掉的5个不良习惯的详细内容,更多关于php 不良习惯的资料请关注三水点靠木其它相关文章!

PHP 相关文章推荐
一段php加密解密的代码
Jul 16 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
Nov 07 PHP
用php制作简单分页(从数据库读取记录)的方法详解
May 04 PHP
解析Win7 XAMPP apache无法启动的问题
Jun 26 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
Jul 04 PHP
windows平台中配置nginx+php环境
Dec 06 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
Feb 26 PHP
php中foreach结合curl实现多线程的方法分析
Sep 22 PHP
php微信开发之自定义菜单完整流程
Oct 08 PHP
在Laravel5.6中使用Swoole的协程数据库查询
Jun 15 PHP
php+redis实现消息队列功能示例
Sep 19 PHP
redis+php实现微博(二)发布与关注功能详解
Sep 23 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
Sep 17 #PHP
深入浅析安装PhpStorm并激活的步骤详解
Sep 17 #PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
Sep 17 #PHP
PHPstorm启用自动换行的方法详解(IDE)
Sep 17 #PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
Sep 17 #PHP
phpstorm激活码2020附使用详细教程
Sep 25 #PHP
phpStorm2020 注册码
Sep 17 #PHP
You might like
PHP中一个控制字符串输出的函数
2006/10/09 PHP
destoon供应信息title调用出公司名称的方法
2014/08/22 PHP
php隐藏实际地址的文件下载方法
2015/04/18 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
Django中通过定时任务触发页面静态化的处理方式
2018/08/29 PHP
javascript 常用代码技巧大收集
2009/02/25 Javascript
将字符串中由空格隔开的每个单词首字母大写
2014/04/06 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
2014/07/14 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
node.js express安装及示例网站搭建方法(分享)
2016/08/22 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
js实现弹窗暗层效果
2017/01/16 Javascript
jQuery表格的维护和删除操作
2017/02/03 Javascript
vue实现点击图片放大效果
2017/08/15 Javascript
vue props传值失败 输出undefined的解决方法
2018/09/11 Javascript
使用apifm-wxapi快速开发小程序过程详解
2019/08/05 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
2019/10/14 Javascript
微信小程序实现底部弹出框
2020/11/18 Javascript
Python科学计算环境推荐——Anaconda
2014/06/30 Python
Python学习思维导图(必看篇)
2017/06/26 Python
解决PyCharm中光标变粗的问题
2017/08/05 Python
python使用sqlite3时游标使用方法
2018/03/13 Python
使用requests库制作Python爬虫
2018/03/25 Python
Django自带日志 settings.py文件配置方法
2019/08/30 Python
牦牛毛户外探险服装:Kora
2019/02/08 全球购物
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
婚假请假条怎么写
2014/04/10 职场文书
危爆物品安全大检查大整治工作方案
2014/05/03 职场文书
刑事撤诉申请书
2015/05/18 职场文书
太行山上观后感
2015/06/05 职场文书
高老头读书笔记
2015/06/30 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书
银行安全保卫工作总结
2015/08/10 职场文书
Mybatis是这样防止sql注入的
2021/12/06 Java/Android
解决 redis 无法远程连接
2022/05/15 Redis