博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
十个你需要在 PHP 7 中避免的坑
阅读量:5983 次
发布时间:2019-06-20

本文共 2315 字,大约阅读时间需要 7 分钟。

clipboard.png

1. 不要使用 mysql_ 类函数

终于,你不用再看到建议不要使用 mysql_ 函数的提示了。因为 PHP 7 从核心上完全移除了它们,这意味着请你移步至更好的 mysqli_ 类函数,或者更灵活的 PDO 层。

2. 不要写无用的代码

这看上去是个无脑建议,但是随着 PHP7 速度的提升掩盖了一些问题使它显得日趋重要。不要仅仅因切到 PHP7 让网站速度变得快点,你就沾沾自喜了。

想理解速度的重要性和如何做的更好,去看看我们这篇文章 。

作为开发者,应该确保按需加载脚本,可能时再组合,编写高效的数据库查询语句,如果可能的话  等等。

3. 不要在文件末尾使用 PHP 闭合标签

如果你随便看看,就会发现大部分 WordPress 核心代码文件结尾都省略了 PHP 闭合标签。事实上,Zend 框架尤为明显地 。它并非 PHP 所必须,在文件结尾处省略它,可确保结尾无额外空白。

4. 如非必须不要引用传参

我个人非常不喜欢引用传参。我当然知道在某些场合下它很有用,但是多数场合下,它会使得代码难以理解,难以遵循,难以预测结果。

人们认为引用可以使它们的代码更快,不过正如  的这篇文章所指出的,事实并非如此。

PHP 内置的 shuffle() 或者 sort() 函数,就是糟糕的引用传参案例。 它修改了原数组而不是返回一个打乱的或者排好序的数组,这是完全违背了我们意愿的。

5. 不要在循环里使用查询

在循环中使用数据库查询时最糟糕的。他会给系统带来不必要的压力,并且很有可能,你可以在循环外使用查询而更快的得到相同的结果。当我碰到必须这样用的场景时,我通常会通过分成两个查询来构造一个数组的方式来解决。然后循环数组而无需循环查询。

由于 WordPress 的运行方式,这样做可能会有些例外。 get_post_meta() 将从数据库获取一个元数据,如果您正在循环访问特定文章的元数据,则可以在循环中使用它。这是因为当你第一次使用它的时候,WordPress 实际上取得了所有的元数据并缓存了起来。 之后的调用实际上是调用缓存数据而不是调用数据库。

解决这些问题的最好办法是阅读函数文档并且使用一些类似 的东西。

6. 不要在 SQL 查询中使用 *

好吧,这更像是一个 MySQL 的问题,但我们更倾向于在代码中编写 SQL 语句,所以我说这是个公平的游戏。不管什么情况下,如果你能避免使用通配符,那就不要使用,尤其是当你的数据库有很多字段的时候。

明确指定你需要的字段,并且只检索这些字段。这有助于节省内存,保护数据,并且能让事情变得更加清晰明白。

在 SQL 方面,尽可能的了解你可用的函数并测试速度。 当计算平均数,求和以及计算相似的数字的时候,使用 SQL 内置函数而不是 PHP 的函数。 如果你不确定一个查询的速度快慢,测试一下它并和其他做法进行比较,选出最好的那一种。

7. 不要信任用户的输入

信任用户输入并不明智。对于用户输入,总是需要过滤,杀毒,转义,校验以及使用回退。 用户输入存在三个问题:我们开发者不可能考虑到所有可能性,经常出错,存心的恶意输入。

一个经过深思熟虑的系统可以防止所有的这些问题。 在使用数据库时,确保使用内置的函数,如 filter_var(),来检查合法性,进行转义,和其他能做的事。

WordPress 有一堆函数可以帮到你。可以瞧一瞧这篇文章来了解更多信息  。

8. 不要自作聪明

你的目标就是写出能清晰的表达你的意愿的优雅代码。可能你通过缩短变量名,使用多层级三目逻辑运算和其他小聪明让每个页面节约了0.01秒的加载时间,但是和因此种下你和你的团队头疼不已难以维护的恶果相比,得不偿失。

恰当的命名变量,以简洁明了的方式写出代码文档。更好的做法就是,使用标准化的面向对象的代码风格,或多或少的编写文档,而非使用大量的内联代码注释。

9. 不要重复造轮子

PHP 已经存在有一段时间了,网站开发存在的时间甚至更久远。 无论你做过啥,前人肯定已经做过。不要害怕依赖别人的支持, ,  ,  都是你的良师益友。

从日志到颜色处理器,从分析器到单元测试框架,从 Mailchimp APIs 到 Twitter Bootstrap,所有的东西只需要按一个按钮(或者敲一个命令)就能用,去使用它们吧!

10. 不要忽视其他语言

如果你是个 PHPer,现在的标准做法是至少了解 HTML,CSS,Javascript 和 MySQL。 当你能很好的处理这些语言的时候,就是再去学习一遍 Javascript 的时候。Javascript 不是 jQuery。你应该学习 Javascript 来有效的利用 jQuery。

我也建议学习 PHP 面向对象的一切。它是个救星,能让你的代码在数量级上得到提升。它也能打开类似 C# 和 Java 语言的大门,在你有了这些经验后,它们能让你更容易明白面向对象编程(OOP)。

通过学习包管理,构建脚本,Coffeescript, LESS, SASS, YAML, 模板引擎以及其他有用的工具来扩展知识面。我也由衷的推荐看看其他框架,尤其是  。

当你这些都做得够好了的时候,考虑下 Ruby, Ruby on Rails 以及 Android,iPhone,Windows Phone 的 app 开发? 你可能认为这些毫无意义,因为它们不在你的舒适区和工作需求之内,但它们恰恰是重点。 每种语言都有一些有用的教学知识和一些无害的额外知识。所有顶尖的PHP开发人员都了解其他编程语言,这不是偶然的!

更多现代化 PHP 知识,请前往

转载地址:http://wqrox.baihongyu.com/

你可能感兴趣的文章
MongoDB入门,在CentOS6.4 安装MongoDB
查看>>
Maven实战
查看>>
TEST
查看>>
gzcompress、gzencode、gzdeflate压缩比比较
查看>>
easyUI如何增加自定义的图标
查看>>
转自Ubuntu中国:apt软件包管理常用命令
查看>>
Fedora 17 调节笔记本屏幕亮度
查看>>
浅拷贝和深拷贝
查看>>
python 三色球问题
查看>>
利用resteasy框架构建rest webservice----第二波:使用不同的方式让resteasy发布我们的restful webservice 服务(实例、教程)...
查看>>
angular 杂类小结
查看>>
Map集合——Map接口
查看>>
SpringBoot入坑指南之三:业务初始化
查看>>
面向对象的问题
查看>>
struts2的action到action传值
查看>>
C++之 const
查看>>
python操作Excel读写(使用xlrd和xlrt)
查看>>
工作中遇到的问题Python子线程退出
查看>>
通过springUtil 获取spring实例
查看>>
Git常用命令
查看>>