十大你需要在PHP中避免的坑

十大你需要在PHP中避免的坑

1. 不要使用 mysql_ 类函数

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

2. 不要写无用的代码

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

想理解速度的重要性和如何做的更好,去看看我们这篇文章 初学者加速优化指南。

作为开发者,应该确保按需加载脚本,可能时再组合,编写高效的数据库查询语句,如果可能的话 使用缓存 等等。

立即学习“PHP免费学习笔记(深入)”;

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

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

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

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

人们认为引用可以使它们的代码更快,不过正如 可敬的 PHP 程序员 的这篇文章所指出的,事实并非如此。

PHP 内置的 shuffle() 或者 sort() 函数,就是糟糕的引用传参案例。 它修改了原数组而不是返回一个打乱的或者排好序的数组,这是完全违背了我们意愿的。

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

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

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

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

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

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

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

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

7. 不要信任用户的输入

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

一个经过深思熟虑的系统可以防止所有的这些问题。 在使用数据库时,确保使用内置的函数,如 filter_var(),来检查合法性,进行转义,和其他能做的事。

WordPress 有一堆函数可以帮到你。可以瞧一瞧这篇文章来了解更多信息 Validating, escaping and sanitising user data 。

8. 不要自作聪明

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

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

9. 不要重复造轮子

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

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

10. 不要忽视其他语言

如果你是个 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开发人员都了解其他编程语言,这不是偶然的!

感谢大家的阅读,希望大家收益多多。

本文转载于:https://www.cnblogs.com/summerblue/p/8778819.html

推荐教程:《php教程》

以上就是十大你需要在PHP中避免的坑的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2593997.html

(0)
上一篇 2025年3月6日 17:28:20
下一篇 2025年2月22日 22:19:08

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 精选3道面试题,带你了解PHP的垃圾回收机制!!

    本篇文章给大家分享关于php垃圾回收机制的高级面试题,并带大家深入了解一下php垃圾回收机制。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 ps:本篇内容包括精选面试题与知识篇。 PHP面试题关于PHP的垃圾回收机制,P…

    2025年3月6日
    200
  • 对PHP的误解有哪些?

    php 现在名声很糟糕,因为它曾经是“可怕”的。本文试着回答一些常见的关于 php 的断言,目的是向非技术人员解释,php 并不像许多人所说的那么糟糕。 →本文翻译自:https://www.getparthenon.com/blog/ph…

    编程技术 2025年3月6日
    200
  • 消息队列RabbitMQ入门与PHP实例详解

    本篇文章给大家带来了关于php的相关知识,其中主要介绍了关于消息队列rabbitmq入门还有一些实战详解,消息队列是应用间的通信方式,下面一起来看一下,希望对大家有帮助。 推荐学习:《PHP视频教程》 消息队列介绍以及消息队列应用场景 Ra…

    2025年3月6日 编程技术
    200
  • 如何提高 Laravel 应用程序的速度

    如何提高 laravel 应用程序的速度?下面本篇文章给大家介绍一下优化 laravel 运行效率的方法,希望对大家有所帮助! 随着以技术为导向的公司的步伐不断加快,软件开发正在加速发展。 许多新的技术堆栈正在帮助我们简化开发过程,其中许多…

    2025年3月6日
    200
  • PHP和Python、Ruby、Node.js等语言的比较

    随着互联网技术的不断发展,php、python、ruby、node.js等语言的应用范围越来越广泛。本文将从以下几个方面来比较这些语言:语法简洁性、执行效率、可扩展性、通用性、开发效率和市场需求。 一、语法简洁性PHP语法较为简单,学习门槛…

    编程技术 2025年3月6日
    200
  • 什么是Composer,它与PHP的关系是什么?

    随着现代 web 开发技术的迅速发展,依赖管理成为了一个越来越重要的议题。无论是前端还是后端开发,我们需要引入各种各样的库和框架来达到更高的开发效率和更好的应用性能。而这些库和框架的组织、版本控制和安装管理问题则成为了一个值得思考和解决的难…

    编程技术 2025年3月6日
    200
  • PHP中如何使用Redis技术?

    redis是一种高性能的内存数据存储系统,允许作为缓存系统使用,也可以作为一个发布/订阅系统、消息队列、计时器等等。随着web应用程序的高速发展,redis已经成为广泛使用的缓存、数据库和消息队列。php是一种使用广泛的编程语言,也可以和r…

    编程技术 2025年3月6日
    200
  • PHP入门指南:PHP和JavaScript

    随着网络的普及,越来越多的人开始关注网站开发方面的知识。在网站开发中,php和javascript是两个非常重要的技术。他们可以为网站带来更加丰富的功能和更好的用户体验。在本篇文章中,我们将就php和javascript这两个技术给大家做一…

    编程技术 2025年3月6日
    200
  • 什么是PHP-Activerecord框架?

    php-activerecord框架是一个轻量级的orm(对象关系映射)框架,能够将数据库中的表与php对象进行映射,使得开发人员可以使用面向对象的方式来操作数据库,而无需编写复杂的sql语句。它源于ruby on rails框架中的act…

    编程技术 2025年3月6日
    200
  • 使用PHP WebDriver与Jenkins进行自动化测试和持续集成

    随着软件开发市场的不断发展,软件质量和稳定性的标准也在不断提高。在这个新的背景下,软件测试和持续集成这些概念逐渐成为了越来越多开发者们关注的重点。作为一种主流的编程语言,php 也有着自己的自动化测试和持续集成方案。 在PHP中,自动化测试…

    编程技术 2025年3月6日
    200

发表回复

登录后才能评论