终于,你不用再看到建议不要使用 mysql_
函数的提示了。由于 PHP 7 从核心上彻底移除了它们,这意味着请你移步至更好的 mysqli_
类函数,或者更灵活的 PDO 层。php
这看上去是个无脑建议,可是随着 PHP7 速度的提高掩盖了一些问题使它显得日趋重要。不要仅仅因切到 PHP7 让网站速度变得快点,你就沾沾自喜了。html
想理解速度的重要性和如何作的更好,去看看咱们这篇文章 初学者加速优化指南。mysql
做为开发者,应该确保按需加载脚本,可能时再组合,编写高效的数据库查询语句,若是可能的话 使用缓存 等等。laravel
若是你随便看看,就会发现大部分 WordPress 核心代码文件结尾都省略了 PHP 闭合标签。事实上,Zend 框架尤其明显地 禁止了闭合标签。它并不是 PHP 所必须,在文件结尾处省略它,可确保结尾无额外空白。git
我我的很是不喜欢引用传参。我固然知道在某些场合下它颇有用,可是多数场合下,它会使得代码难以理解,难以遵循,难以预测结果。程序员
人们认为引用可使它们的代码更快,不过正如 可敬的 PHP 程序员 的这篇文章所指出的,事实并不是如此。github
PHP 内置的 shuffle()
或者 sort()
函数,就是糟糕的引用传参案例。 它修改了原数组而不是返回一个打乱的或者排好序的数组,这是彻底违背了咱们意愿的。sql
在循环中使用数据库查询时最糟糕的。他会给系统带来没必要要的压力,而且颇有可能,你能够在循环外使用查询而更快的获得相同的结果。当我碰到必须这样用的场景时,我一般会经过分红两个查询来构造一个数组的方式来解决。而后循环数组而无需循环查询。数据库
因为 WordPress 的运行方式,这样作可能会有些例外。 get_post_meta()
将从数据库获取一个元数据,若是您正在循环访问特定文章的元数据,则能够在循环中使用它。这是由于当你第一次使用它的时候,WordPress 实际上取得了全部的元数据并缓存了起来。 以后的调用其实是调用缓存数据而不是调用数据库。编程
解决这些问题的最好办法是阅读函数文档而且使用一些相似 查询监听器 的东西。
6. 不要在 SQL 查询中使用 *
-------------------------------
好吧,这更像是一个 MySQL 的问题,但咱们更倾向于在代码中编写 SQL 语句,因此我说这是个公平的游戏。无论什么状况下,若是你能避免使用通配符,那就不要使用,尤为是当你的数据库有不少字段的时候。
明确指定你须要的字段,而且只检索这些字段。这有助于节省内存,保护数据,而且能让事情变得更加清晰明白。
在 SQL 方面,尽量的了解你可用的函数并测试速度。 当计算平均数,求和以及计算类似的数字的时候,使用 SQL 内置函数而不是 PHP 的函数。 若是你不肯定一个查询的速度快慢,测试一下它并和其余作法进行比较,选出最好的那一种。
信任用户输入并不明智。对于用户输入,老是须要过滤,杀毒,转义,校验以及使用回退。 用户输入存在三个问题:咱们开发者不可能考虑到全部可能性,常常出错,存心的恶意输入。
一个通过深思熟虑的系统能够防止全部的这些问题。 在使用数据库时,确保使用内置的函数,如 filter_var()
,来检查合法性,进行转义,和其余能作的事。
WordPress 有一堆函数能够帮到你。能够瞧一瞧这篇文章来了解更多信息 Validating, escaping and sanitising user data 。
你的目标就是写出能清晰的表达你的意愿的优雅代码。可能你经过缩短变量名,使用多层级三目逻辑运算和其余小聪明让每一个页面节约了0.01秒的加载时间,可是和所以种下你和你的团队头疼不已难以维护的恶果相比,得不偿失。
恰当的命名变量,以简洁明了的方式写出代码文档。更好的作法就是,使用标准化的面向对象的代码风格,或多或少的编写文档,而非使用大量的内联代码注释。
PHP 已经存在有一段时间了,网站开发存在的时间甚至更久远。 不管你作过啥,前人确定已经作过。不要惧怕依赖别人的支持, Github, Composer , Packagist 都是你的良师益友。
从日志到颜色处理器,从分析器到单元测试框架,从 Mailchimp APIs 到 Twitter Bootstrap,全部的东西只须要按一个按钮(或者敲一个命令)就能用,去使用它们吧!
若是你是个 PHPer,如今的标准作法是至少了解 HTML,CSS,Javascript 和 MySQL。 当你能很好的处理这些语言的时候,就是再去学习一遍 Javascript 的时候。Javascript 不是 jQuery。你应该学习 Javascript 来有效的利用 jQuery。
我也建议学习 PHP 面向对象的一切。它是个救星,能让你的代码在数量级上获得提高。它也能打开相似 C# 和 Java 语言的大门,在你有了这些经验后,它们能让你更容易明白面向对象编程(OOP)。
经过学习包管理,构建脚本,Coffeescript, LESS, SASS, YAML, 模板引擎以及其余有用的工具来扩展知识面。我也由衷的推荐看看其余框架,尤为是 Laravel 。
当你这些都作得够好了的时候,考虑下 Ruby, Ruby on Rails 以及 Android,iPhone,Windows Phone 的 app 开发? 你可能认为这些毫无心义,由于它们不在你的温馨区和工做需求以内,但它们偏偏是重点。 每种语言都有一些有用的教学知识和一些无害的额外知识。全部顶尖的PHP开发人员都了解其余编程语言,这不是偶然的!
更多现代化 PHP 知识,请前往 Laravel / PHP 知识社区