十个你需要在 PHP 7 中避免的坑

·  阅读 217
原文链接: laravel-china.org
这是一篇社区协同翻译的文章,已完成翻译,更多信息请点击 协同翻译介绍

file

1. 不要使用 mysql_ 类函数

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

2. 不要写无用的代码

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

想理解速度的重要性和如何做的更好,去看看我们这篇文章 初学者加速优化指南。 作为开发者,应该确保按需加载脚本,可能时再组合,编写高效的数据库查询语句,如果可能的话 使用缓存 等等。

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

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

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

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

人们认为引用可以使它们的代码更快,不过正如 可敬的 PHP 程序员 的这篇文章所指出的,事实并非如此。 PHP 内置的 shuffle() 或者 sort() 函数,就是糟糕的引用传参案例。 它修改了原数组而不是返回一个打乱的或者排好序的数组,这是完全违背了我们意愿的。

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

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

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

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

JiaZombie 翻译于 9小时前 1 重译 Summer 审阅

查看其他 2 个版本

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

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

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

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

7. 不要信任用户的输入

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

一个经过深思熟虑的系统可以防止所有的这些问题。 在使用数据库时,确保使用内置的函数,如 filter_var(),来检查合法性,进行转义,和其他能做的事。 WordPress 有一堆函数可以帮到你。可以瞧一瞧这篇文章来了解更多信息 Validating, escaping and sanitising user data 。 JiaZombie 翻译于 10小时前 0 重译 Summer 审阅

8. 不要自作聪明

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

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

9. 不要重复造轮子

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

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

wilson_yang 翻译于 9小时前 0 重译 Summer 审阅

10. 不要忽视其他编程语言

作为 PHP 开发人员,现在的标准是至少要了解 HTML,CSS,Javascript 和 MySQL 。当你对这些语言的掌握达到相当的程度之后,是时候再去学习一遍 Javascript 。Javascript 并不是 jQuery 。你应该充分学习 Javascript 以便能够去有效地利用它。

我还建议你学习所有有关 PHP 面向对象的知识,这是一种救生工具,同时会使你的代码在数量级上达到更好。这也将打开一扇通向 C# 和 Java 等其他编程语言的大门,由于有过 OOP 的学习经历,其他编程语言也会更加容易被理解。

接下来学习诸如,包管理器,构建脚本,Coffeescript,LESS, SASS, YAML,模版引擎,等令人惊叹的工具去扩展你的知识领域。我强烈地推荐多去了解一些其他框架,特别是 Laravel 。

当你能把这些事情做的相当好的时候,那么关于 Ruby, Ruby on Rails,Android 应用开发, iPhone, Windows Phone 这些呢? 你可能想那是不重要的,因为对这些领域的涉足会使你走出舒适区,同时还超出了你的工作需要,但是这恰恰才是关键所在。每种语言都有值得学习的地方,多学一点并没有坏处。顶级的 PHP 开发者都了解很多语言并不是偶然!

庞浩然Paul 翻译于 10小时前 1 重译 Summer 审阅

查看其他 1 个版本

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

收藏成功!
已添加到「」, 点击更改