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 相关文章推荐
第八节 访问方式 [8]
Oct 09 PHP
又一个php 分页类实现代码
Dec 03 PHP
php实现utf-8和GB2312编码相互转换函数代码
Feb 07 PHP
PHP中把stdClass Object转array的几个方法
May 08 PHP
php数组合并array_merge()函数使用注意事项
Jun 19 PHP
PHP实现一维数组转二维数组的方法
Feb 25 PHP
PHP数据的提交与过滤基本操作实例详解
Nov 11 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 PHP
PHP标准库(PHP SPL)详解
Mar 16 PHP
phpQuery采集网页实现代码实例
Apr 02 PHP
laravel admin实现分类树/模型树的示例代码
Jun 10 PHP
一文搞懂php的垃圾回收机制
Jun 18 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过滤XSS攻击的函数
2013/11/12 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
2016/05/13 PHP
php封装的验证码工具类完整实例
2016/10/19 PHP
php上传excel表格并获取数据
2017/04/27 PHP
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
JavaScript编写简单的计算器
2015/11/25 Javascript
完善的jquery处理机制
2016/02/21 Javascript
jQuery自制提示框tooltip改进版
2016/08/01 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
解决vue中虚拟dom,无法实时更新的问题
2018/09/15 Javascript
React Hooks的深入理解与使用
2018/11/12 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
vue实现lodop打印功能的示例
2020/11/11 Javascript
使用C++扩展Python的功能详解
2018/01/12 Python
python实现远程通过网络邮件控制计算机重启或关机
2018/02/22 Python
利用python画出折线图
2018/07/26 Python
在cmder下安装ipython以及环境的搭建
2018/10/19 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
Python3.5实现的罗马数字转换成整数功能示例
2019/02/25 Python
python面向对象实现名片管理系统文件版
2019/04/26 Python
详解【python】str与json类型转换
2019/04/29 Python
Django 项目重命名的实现步骤解析
2019/08/14 Python
Python异常继承关系和自定义异常实现代码实例
2020/02/20 Python
零基础小白多久能学会python
2020/06/22 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
html5摇一摇代码优化包括DeviceMotionEvent等等
2014/09/01 HTML / CSS
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
华三通信H3C面试题
2015/05/15 面试题
班组长的岗位职责
2013/12/09 职场文书
初中地理教学反思
2014/01/11 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
《锄禾》教学反思
2014/04/08 职场文书
政府绩效管理实施方案
2014/05/04 职场文书
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android