10 件在 PHP 7 中不要做的事情

  1. 不要使用mysql_函数

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

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

转载于:https://www.cnblogs.com/yyuyu/p/10092079.html

10 件在 PHP 7 中不要做的事情相关推荐

  1. 软件工程SWEBOK所包含的10个领域以及每个领域所做的事情

    软件工程知识体系(WERBOK)分解成10个领域,形成层次化得组成结构,分别是:软件需求.软件设计.软件制造.软件测试.软件维护.软件配置管理.软件工程管理.软件工程过程.软件工程工具与方法.软件质量 ...

  2. 请求发起过程,在tcp/ip四层网络模型中所做的事情

    当应用程序用T C P传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络.其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息) 客户端如何找到目标服务 在客户 ...

  3. rust全息要啥才能做_在 Rust 中不能做什么

    编者注:上周 Armin 在自己的博客上首次发布了这个版本.如果你想再次阅读这篇文章,或者想看看 Armin 还在做什么,一定要去看看. 去年一直很有趣,因为我们用 Rust 建造了很多好东西,并且这 ...

  4. 我们可以用计算机做的事,2015地球一小时:今晚我们可以做的10件事(中英文版)

    2015地球一小时:今晚我们可以做的10件事(中英文版) 2015年3月28日周六晚上8点半,全世界成千上万的人们会加入到提倡节能减排的"地球一小时"(Earth Hour)熄灯活 ...

  5. 安装Ubuntu13.10后必做的10件事

    Ubuntu 13.10发布了,而且你已经升级了,然后你想知道现在要做些什么.不要着急,这里有10件安装完Ubuntu 13.10后必做的事. 我们以前为ubuntu每个版本整理了一个安装后核对表,但 ...

  6. 安装 Fedora 21 工作站后要做的10件事情

    安装 Fedora 21 工作站后要做的10件事情 Fedora 21已经在2014年12月正式发布.对于Fedora新手和初学者来说,初始化设置可能存在一点困难,我们翻译了一篇Fedora系统配置文 ...

  7. 35岁前必做10件事 让你少奋斗8年挣足钱

    35岁前必做10件事 让你少奋斗8年挣足钱(转)中财网 (2010-03-27 16:04:01) 转载 标签: 就业 求职 乘数 钱经 李彦宏 美国 杂谈 分类:转载 男人.女人都要过三十五岁这堵墙 ...

  8. 运维 服务器安装,IT服务器运维安装CentOS后,你要做的10件事

    IT服务器运维安装CentOS后,你要做的10件事 IT服务器小知识CentOS是一款社区驱动的免费Linux发行版,也是一款功能很强大的可替代红帽企业级Linux(RHEL)的发行版.它源自红帽企业 ...

  9. linux mint 19界面美化,安装完 LinuxMint 19.3 后必做的10件事

    安装完 LinuxMint 19.3 后必做的10件事 LinuxMint 发行版是一款基于Ubuntu的易用性好,特别适合入门者使用的一款Linux发行版,相比于Ubuntu,界面和操作更友好. 本 ...

最新文章

  1. java 内存测试_请你说一下java jvm的内存机制
  2. esxi 部署模板_vSphere使用模板部署虚拟机
  3. resource fork, Finder information, or similar detr
  4. grpc-go客户端源码分析
  5. android权威指南十三章,《Android编程权威指南》第30~32以及第34章读书笔记
  6. Shadow Map 原理和改进 【转】
  7. paip.svn不能忽略文件的bug.txt
  8. centos7,PPTP搭建简易教程
  9. 聚焦技术实战!MDCC 2016 移动开发者大会盛大开幕
  10. win10 wifi连接不上服务器未响应,Win10连不上WiFi怎么办?Win10连不上WiFi解决方法介绍...
  11. 【总结】最专业最系统的CV内容,有三AI所有免费与付费的计算机视觉课程汇总(2022年7月)...
  12. oracle归档切换,oracle 切换归档方式
  13. s8 android 8.0变化,三星s8何时能更新android8.0
  14. 基于stm32的两轮自平衡小车3(硬件篇)
  15. 端口Banner信息的获取
  16. echaarts水滴(水球图)波浪效果
  17. Python配置清华软件安装源
  18. php实现aes ecb模式加密,PHP、Python、Java的AES ECB加密实现-Fun言
  19. iOS 二维码生成 (Swift代码)
  20. 电子计算机上面的mrc是什么意思,计算器中的M-键是什么功能?

热门文章

  1. css3特效-传送带示例
  2. IntelliJ IDEA 8.1.3 Web开发视频教程
  3. LeetCode 945. 使数组唯一的最小增量
  4. oracle 删除已备份归档,通过RMAN联机全库备份,包括控制文件,归档日志文件,备份成功后,删除已备份的归档日志。...
  5. ssh 远程登录_C.4 彻底解决-新版本Sentaurus TCAD的SSH远程登录问题!!!
  6. 软启动器说明书_软启动器怎么接线?一张电路图一张实物图供大家参考
  7. Java中抽象类和接口的区别(来源一)
  8. 公式中*和· 号的含义区分(GRU公式)
  9. 波卡DOT国库报告:130.89万个DOT被销毁 9.2%DOT 用来资助国库支出议案
  10. SAP License:HANA在线日志被误删后如何恢复?