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 获取MSN好友列表的代码(2009-05-14测试通过)
Sep 09 PHP
php in_array 函数使用说明与in_array需要注意的地方说明
Apr 13 PHP
PHP 图片水印类代码
Aug 27 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
Jun 10 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
Jun 27 PHP
PHP+jQuery 注册模块开发详解
Oct 14 PHP
Codeigniter发送邮件的方法
Mar 19 PHP
java微信开发之上传下载多媒体文件
Jun 24 PHP
ThinkPHP 模板引擎使用详解
May 07 PHP
Yii框架实现图片上传的方法详解
May 20 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 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网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
2016/12/02 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
javascript 触发事件列表 比较不错
2009/09/03 Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
2015/08/05 Javascript
基于jQuery实现仿搜狐辩论投票动画代码(附源码下载)
2016/02/18 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
微信小程序  网络请求API详解
2016/10/25 Javascript
简单实现node.js图片上传
2016/12/18 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
深入学习nodejs中的async模块的使用方法
2017/07/12 NodeJs
react router 4.0以上的路由应用详解
2017/09/21 Javascript
XMLHttpRequest对象_Ajax异步请求重点(推荐)
2017/09/28 Javascript
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
十分钟教你上手ES2020新特性
2020/02/12 Javascript
Vant 在vue-cli 4.x中按需加载操作
2020/11/05 Javascript
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
python判断windows系统是32位还是64位的方法
2015/05/11 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
Python玩转加密的技巧【推荐】
2019/05/13 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
2019/10/14 Python
Python单元测试与测试用例简析
2019/11/09 Python
Pandas替换及部分替换(replace)实现流程详解
2020/10/12 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
2021/03/03 Python
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
几个判断型的面试题
2012/07/03 面试题
大学生学习自我评价
2014/01/13 职场文书
公务员爱岗敬业心得体会
2016/01/25 职场文书
golang 实现菜单树的生成方式
2021/04/28 Golang
浅析Python实现DFA算法
2021/06/26 Python
mysql如何能有效防止删库跑路
2021/10/05 MySQL