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 相关文章推荐
论坛头像随机变换代码
Oct 09 PHP
PHP制作图型计数器的例子
Oct 09 PHP
html中select语句读取mysql表中内容
Oct 09 PHP
php 来访国内外IP判断代码并实现页面跳转
Dec 18 PHP
php读取图片内容并输出到浏览器的实现代码
Aug 08 PHP
一个简单且很好用的php分页类
Oct 26 PHP
PHP迭代器的内部执行过程详解
Nov 12 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
Jun 19 PHP
PHP实现图片自动清理的方法
Jul 08 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
Jul 07 PHP
PHP递归获取目录内所有文件的实现方法
Nov 01 PHP
PHP使用DOM对XML解析处理操作示例
Jul 04 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
memcached 和 mysql 主从环境下php开发代码详解
2010/05/16 PHP
用PHP编写和读取XML的几种方式
2013/01/12 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
php进程间通讯实例分析
2016/07/11 PHP
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
你的 mixin 真的兼容 ECMAScript 5 吗?
2013/04/11 Javascript
判断ie的两种简单方法
2013/08/12 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
js实现截图保存图片功能的代码示例
2017/02/16 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
微信小程序实现登录页云层漂浮的动画效果
2017/05/05 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
node的process以及child_process模块学习笔记
2018/03/06 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
2019/03/01 Python
Selenium Webdriver元素定位的八种常用方式(小结)
2021/01/13 Python
澳大利亚领先的女帽及配饰公司:Morgan&Taylor
2019/12/01 全球购物
试述DBMS的主要功能
2016/11/13 面试题
4s店机修工岗位职责
2013/12/20 职场文书
医学院毕业生自荐信范文
2014/03/06 职场文书
出纳试用期自我鉴定
2014/04/07 职场文书
一年级小学生评语
2014/04/22 职场文书
需求分析说明书
2014/05/09 职场文书
医学求职自荐信
2014/06/21 职场文书
学习焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
在人间读书笔记
2015/06/30 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js
SpringBoot整合阿里云视频点播的过程详解
2021/12/06 Java/Android