注意!PHP 7中不要做的10件事


Posted in PHP onSeptember 18, 2016

切记,在PHP 7中不要做的10件事

1. 不要使用 mysql_ 函数 

这一天终于来了,从此你不仅仅“不应该”使用mysql_函数。PHP 7 已经把它们从核心中全部移除了,也就是说你需要迁移到好得多的mysqli_函数,或者更灵活的 PDO 实现。

注意!PHP 7中不要做的10件事 

2. 不要编写垃圾代码 

这一条可能易于理解,但是会变得越来越重要,因为 PHP 7 的速度提升可能会隐藏你的一些问题。不要仅仅满足于你的站点速度,因为迁移到 PHP 7 才让它变快。 

为了理解速度有多重要,以及如何把事情做得更好,请看一看我们的文章速度优化入门指南。 

作为一名开发者,你应该总是确保按需加载脚本,尽可能连接它们,编写高效的数据库查询,尽可能使用缓存,以及其它。 

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

你可以看一看,当一个文件以 PHP 代码结尾时,WordPress 多数核心代码都把末尾的 PHP 标签去掉了。实际上,Zend 框架特别禁止了它。PHP 并不需要文件末尾的闭合标签,并且我们可以通过去掉它来保证不会在后面添加任何的空白字符。 

4. 不要做不必要的引用传递 

我个人不喜欢引用传递。我知道有时候它很实用,但是其它情况下它使代码变得难懂,并且更难预测结果。 

据说一些人认为它使代码运行更快,但是根据一些 PHP 高级程序员所说,这并不正确。 

说明引用为什么不好的一个例子是,PHP 内建了shuffle()和sort()。它们修改原始数组,而不是返回处理后的数组,这很不合逻辑。 

5. 不要在循环中执行查询 

在循环中执行查询非常浪费。它给你的系统施加不必要的压力,并且可能能够在循环外部更快获得相同结果。当我遇到需要这样的情况时,我通常会使用两个分离的查询来解决问题,我会使用它们来构建数据数组。之后我会遍历数组,并不需要在这个过程中执行查询。 

由于 WordPress 适用于这里,它可能有一些例外。虽然get_post_meta() 会从数据库获取大量数据,如果你正在遍历某个特殊博文的元数据你可以在循环中使用它。这是因为当你第一次调用它的时候,WordPress实际上会获取所有元数据并缓存它们。后续的调用使用这些缓存数据,没有数据库的调用。 

弄懂这些的最佳方式是阅读函数文档,以及使用类似 Query Monitor 的工具。 

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

当然,这个更像 MySQL 的问题,但是我们习惯在 PHP 中编写 SQL 代码,所以都差不多。无论如何,如果可以避免的话,不要在 SQL 查询里使用通配符,尤其是数据库有很多列的时候。 

你应该明确指定需要哪些行,并且仅仅获取它们。这有助于减少所用资源,保护数据,以及让事情变得尽可能清晰。 

对于 SQL,你需要了解所有可用的函数,并且尽可能测试其速度。在计算均值、求和或计算类似数值时,要使用 SQL 函数而不是 PHP 函数。如果你不确定某个查询的速度,测试它并且尝试一些其它的编译 — 之后使用最好的那个。 

7. 不要信任用户输入 

信任用户输入是不明智的。始终校验、过滤、转义、检查并留好退路。用户数据存在三个问题:我们开发者并没有考虑每种可能性,它通常不正确,以及它可能是蓄意破坏。 

经过周密考虑的系统可以防护这些威胁。要确保使用类似filter_var()的内建函数检查适当的值,以及在处理数据库时转义(或预编译)。 

WordPress 拥有一些函数来解决问题。详见文章校验、转义和过滤用户数据。 

8. 不要故作聪明 

你的目标应该是编写优雅的代码,来更清晰地表达你的意图。你可能能够通过将任何东西缩短为一个单词的变量,使用多层的三元逻辑,以及其它手段,从每个页面中优化 0.01 秒。但这只会给你和你周围的人产生大麻烦。 

合理命名变量,为代码编写文档,优先选择清晰而不是简洁。甚至还可以更好,使用标准的面向对象代码,它本身或多或少就是文档,不需要一大堆内联数值。 

9. 不要重新发明轮子 

PHP 到现在为止有很长时间了,网站被造出来的时间更长。很可能无论你需要造出什么,一些人之前早就造出来了。不要害怕向他人寻求支持,Github是你的好朋友,Composer也是,Packagist也是。 

从日志工具到调色工具,从性能分析器到单元测试框架,从 Mailchimp API 到 Twitter Bootstrap,每个东西都可以通过按下按键(或者敲下命令)来获取,使用它们吧! 

10. 不要忽略其它语言 

如果你是个 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 顶级开发者都懂得很多其它编程语言,这并非偶然。

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
傻瓜化配置PHP环境――Appserv
Dec 13 PHP
PHP中的session永不过期的解决思路及实现方法分享
Apr 20 PHP
Notice: Trying to get property of non-object problem(PHP)解决办法
Mar 11 PHP
PHP文章采集URL补全函数(FormatUrl)
Aug 02 PHP
PHP中使用asort进行中文排序失效的问题处理
Aug 18 PHP
PHP快速生成各种信息提示框的方法
Feb 03 PHP
CI框架集成Smarty的方法分析
May 17 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
Jul 01 PHP
thinkphp5实现无限级分类
Feb 18 PHP
PHP实现批量修改文件名的方法示例
Sep 18 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
Sep 29 PHP
PHP开发api接口安全验证操作实例详解
Mar 26 PHP
深入理解PHP类的自动载入机制
Sep 16 #PHP
PHP实现链式操作的原理详解
Sep 16 #PHP
详解PHP中websocket的使用方法
Sep 15 #PHP
PHP简单实现上一页下一页功能示例
Sep 14 #PHP
PHP自定义函数格式化json数据示例
Sep 14 #PHP
ThinkPHP中session函数详解
Sep 14 #PHP
PHP大神的十大优良习惯
Sep 14 #PHP
You might like
基于数据库的在线人数,日访问量等统计
2006/10/09 PHP
Discuz 模板引擎的封装类代码
2008/07/18 PHP
解析获取优酷视频真实下载地址的PHP源代码
2013/06/26 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
javascript实现tabs选项卡切换效果(自写原生js)
2013/03/19 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
2014/05/02 Javascript
JS是按值传递还是按引用传递
2015/01/30 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
java必学必会之static关键字
2015/12/03 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
原生JS实现垂直手风琴效果
2017/02/19 Javascript
CodeMirror js代码加亮使用总结
2017/03/25 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
2017/12/31 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
2019/07/26 Javascript
微信小程序 冒泡事件原理解析
2019/09/27 Javascript
javascript如何实现create方法
2019/11/04 Javascript
Python的lambda匿名函数的简单介绍
2013/04/25 Python
python 时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果代码详解
2018/04/19 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
Python中用pyinstaller打包时的图标问题及解决方法
2020/02/17 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
一款纯css3实现简单的checkbox复选框和radio单选框
2014/11/05 HTML / CSS
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
美国领先的眼镜和太阳镜在线零售商:Glasses.com
2019/08/26 全球购物
上海某公司.net方向笔试题
2014/09/14 面试题
酒店采购员岗位职责
2014/03/14 职场文书
经济担保书范文
2014/04/02 职场文书
酒店端午节活动方案
2014/08/26 职场文书
工作保证书怎么写
2015/02/28 职场文书
创业计划书之服装
2019/10/07 职场文书
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server
使用 Apache 反向代理的设置技巧
2022/01/18 Servers