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 已经成熟
Dec 04 PHP
MYSQL 小技巧 -- LAST_INSERT_ID
Nov 24 PHP
初品cakephp 入门基础
Feb 16 PHP
php实现文件下载(支持中文文名)
Dec 04 PHP
详解PHP导入导出CSV文件
Nov 03 PHP
php建立Ftp连接的方法
Mar 07 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
Sep 21 PHP
php实现将base64格式图片保存在指定目录的方法
Oct 13 PHP
PHP防止图片盗用(盗链)的方法小结
Nov 11 PHP
PHP使用ActiveMQ实例
Feb 05 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
Oct 12 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
Jun 05 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的autoLoad自动加载机制
2012/09/27 PHP
PHP读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
php实现从上传文件创建缩略图的方法
2015/04/02 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
2015/12/25 PHP
PHP单态模式简单用法示例
2016/11/16 PHP
php实现连接access数据库并转txt写入的方法
2017/02/08 PHP
使用Json比用string返回数据更友好,也更面向对象一些
2011/09/13 Javascript
跨域请求之jQuery的ajax jsonp的使用解惑
2011/10/09 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
2014/02/19 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
2015/12/18 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
很实用的js选项卡切换效果
2016/08/12 Javascript
详解cordova打包成webapp的方法
2017/10/18 Javascript
vue实现验证码按钮倒计时功能
2018/04/10 Javascript
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
js轮播图之旋转木马效果
2020/10/13 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
比较详细Python正则表达式操作指南(re使用)
2008/09/06 Python
Python中__init__和__new__的区别详解
2014/07/09 Python
Python的装饰器模式与面向切面编程详解
2015/06/21 Python
pygame实现弹力球及其变速效果
2017/07/03 Python
Python安装selenium包详细过程
2019/07/23 Python
python接入支付宝的实例操作
2020/07/20 Python
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
世界排名第一的运动鞋市场:Flight Club
2020/01/03 全球购物
优秀的毕业生的自我评价
2013/12/12 职场文书
会计专业大学生职业生涯规划范文
2014/01/11 职场文书
工地安全检查制度
2014/02/04 职场文书
小学三年级学生评语
2014/04/22 职场文书
Python学习之时间包使用教程详解
2022/03/21 Python
Apache Pulsar结合Hudi构建Lakehouse方案分析
2022/03/31 Servers
Win11右下角图标点了没反应怎么办?Win11点击右下角图标无反应解决方法汇总
2022/07/07 数码科技
Spring Boot优化后启动速度快到飞起技巧示例
2022/07/23 Java/Android