原文:10 Things Not To Do In PHP 7php
译者:飞龙html
协议:CC BY-NC-SA 4.0mysql
mysql_
函数这一天终于来了,今后你不只仅“不该该”使用mysql_
函数。PHP 7 已经把它们从核心中所有移除了,也就是说你须要迁移到好得多的mysqli_
函数,或者更灵活的 PDO 实现。laravel
这一条可能易于理解,可是会变得愈来愈重要,由于 PHP 7 的速度提高可能会隐藏你的一些问题。不要仅仅知足于你的站点速度,由于迁移到 PHP 7 才让它变快。git
为了理解速度有多重要,以及如何把事情作得更好,请看一看咱们的文章速度优化入门指南。程序员
做为一名开发者,你应该老是确保按需加载脚本,尽量链接它们,编写高效的数据库查询,尽量使用缓存,以及其它。github
你能够看一看,当一个文件以 PHP 代码结尾时,WordPress 多数核心代码都把末尾的 PHP 标签去掉了。实际上,Zend 框架特别禁止了它。PHP 并不须要文件末尾的闭合标签,而且咱们能够经过去掉它来保证不会在后面添加任何的空白字符。sql
我我的不喜欢引用传递。我知道有时候它很实用,可是其它状况下它使代码变得难懂,而且更难预测结果。数据库
听说一些人认为它使代码运行更快,可是根据一些 PHP 高级程序员所说,这并不正确。编程
说明引用为何很差的一个例子是,PHP 内建了shuffle()
和sort()
。它们修改原始数组,而不是返回处理后的数组,这很不合逻辑。
在循环中执行查询很是浪费。它给你的系统施加没必要要的压力,而且可能可以在循环外部更快得到相同结果。当我遇到须要这样的状况时,我一般会使用两个分离的查询来解决问题,我会使用它们来构建数据数组。以后我会遍历数组,并不须要在这个过程当中执行查询。
因为 WordPress 适用于这里,它可能有一些例外。虽然get_post_meta()
会从数据库获取大量数据,若是你正在遍历某个特殊博文的元数据你能够在循环中使用它。这是由于当你第一次调用它的时候,WordPress实际上会获取全部元数据并缓存它们。后续的调用使用这些缓存数据,没有数据库的调用。
弄懂这些的最佳方式是阅读函数文档,以及使用相似 Query Monitor 的工具。
*
固然,这个更像 MySQL 的问题,可是咱们习惯在 PHP 中编写 SQL 代码,因此都差很少。不管如何,若是能够避免的话,不要在 SQL 查询里使用通配符,尤为是数据库有不少列的时候。
你应该明确指定须要哪些行,而且仅仅获取它们。这有助于减小所用资源,保护数据,以及让事情变得尽量清晰。
对于 SQL,你须要了解全部可用的函数,而且尽量测试其速度。在计算均值、求和或计算相似数值时,要使用 SQL 函数而不是 PHP 函数。若是你不肯定某个查询的速度,测试它而且尝试一些其它的编译 -- 以后使用最好的那个。
信任用户输入是不明智的。始终校验、过滤、转义、检查并留好退路。用户数据存在三个问题:咱们开发者并无考虑每种可能性,它一般不正确,以及它多是蓄意破坏。
通过周密考虑的系统能够防御这些威胁。要确保使用相似filter_var()
的内建函数检查适当的值,以及在处理数据库时转义(或预编译)。
WordPress 拥有一些函数来解决问题。详见文章校验、转义和过滤用户数据。
你的目标应该是编写优雅的代码,来更清晰地表达你的意图。你可能可以经过将任何东西缩短为一个单词的变量,使用多层的三元逻辑,以及其它手段,从每一个页面中优化 0.01 秒。但这只会给你和你周围的人产生大麻烦。
合理命名变量,为代码编写文档,优先选择清晰而不是简洁。甚至还能够更好,使用标准的面向对象代码,它自己或多或少就是文档,不须要一大堆内联数值。
PHP 到如今为止有很长时间了,网站被造出来的时间更长。极可能不管你须要造出什么,一些人以前早就造出来了。不要惧怕向他人寻求支持,Github是你的好朋友,Composer也是,Packagist也是。
从日志工具到调色工具,从性能分析器到单元测试框架,从 Mailchimp API 到 Twitter Bootstrap,每一个东西均可以经过按下按键(或者敲下命令)来获取,使用它们吧!
若是你是个 PHP 程序员,如今有个好机会去至少了解 HTML、CSS、JavaScript 和 MySQL。当你可以更好地处理这些语言时,就是从新学习 JavaScript 的时机了。JavaScript 并非 jQuery,你应该合理地学习 JavaScript 来更高效地使用它。
我也打算向你推荐学习面向对象的 PHP,它能够节省时间,而且在代码规模更大时会变得更好。对于相似 C# 和 Java 的语言,在你了解 OOP 以后,它们也更易于理解。
经过了解包管理器、构建脚本、CoffeeScript、LESS、SASS、YAML 、脚本引擎和其它强大的工具来扩展你的知识面。我强烈向你推荐看一看其它框架,尤为是 Laravel。
当你使用它们出色完成任务时,学习 Ruby、RoR、Android、iPhone 和 Windows Phone 应用开发如何?你可能会认为这毫无心义,由于它们在你的温馨区和工做所需范围以外,可是这就是它们的意义。每种语言都有一些要学习的实用的东西,以及从没碰到的新知识。全部 PHP 顶级开发者都懂得不少其它编程语言,这并不是偶然。