介绍
PHP 是一门复杂的语言,经历了多年的变革、调整和各种“补丁”。它高度不一致,有时还会有一些 bug。每个版本都有自己独特的特性、缺陷和怪癖,很难跟踪哪个版本有什么问题。也难怪它有时会被人“黑”得这么厉害。
尽管如此,PHP 仍然是目前 Web 上最流行的语言。由于其历史悠久,你会发现网上有大量关于密码哈希、数据库访问等基础操作的教程。问题在于,五篇教程可能会教你五种完全不同的方法。哪种才是“正确”的?其他方法是否有隐藏的 bug 或坑?很难分辨,你可能会在网上到处查找,试图找到最靠谱的答案。
这也是为什么新的 PHP 程序员经常被批评代码丑陋、过时或不安全的原因之一。他们没办法,如果 Google 搜索结果第一条就是四年前的文章,教的还是五年前的方法!
本文档试图解决这些问题。它旨在整理出一套针对 PHP 常见且容易混淆的问题和任务的最佳实践。如果某个底层任务在 PHP 中有多种且容易混淆的方法,这里就会收录。
本文档是什么
这是一份指南,建议在面对 PHP 程序员可能遇到的常见低级任务时采取最佳方向,这些任务由于 PHP 可能提供的多种选择而变得不明确。例如:连接数据库是一个常见任务,在 PHP 中有大量的可能解决方案,并非所有解决方案都是好的——因此,它被包含在本文档中。 这是一系列简短的入门解决方案。示例应该能让你在基本环境中启动和运行,你应该自己做研究来充实它们,使其对你有用。 它指向我们认为的 PHP 最新技术。然而,这意味着如果你使用的是较旧版本的 PHP,执行这些解决方案所需的某些功能可能对你不可用。 这是一份活文档,我会尽我所能随着 PHP 的不断发展而保持更新。
这是一份指南,建议你在面对 PHP 常见底层任务时选择最佳方向,尤其是那些因为 PHP 提供了太多选项而让人困惑的场景。例如:连接数据库是 PHP 中很常见的任务,但解决方案五花八门,并非都靠谱 —— 因此这里会给出推荐做法。
这里提供的是一系列简短的入门解决方案。示例可以帮助你在基础环境下快速上手,具体细化还需要你自己查资料完善。
它指向我们认为的 PHP 领域的最佳实践。不过,这也意味着如果你用的是较老版本的 PHP,某些方案可能无法实现。
这是一个持续更新的文档,随着 PHP 的不断发展我会尽量保持内容最新。
本文档不是什么
本文档不是 PHP 教程。你应该在其他地方学习语言基础和语法。
它不是关于常见的 Web 应用问题指南,比如 cookie 存储、缓存、代码风格、文档等
它不是安全指南。虽然会涉及一些安全相关问题,但你需要自己查资料确保 PHP 应用安全。尤其是,任何方案在实际使用前都要仔细评估。你的代码和复制粘贴,责任自负。
它不推崇某种代码风格、设计模式或框架。
它不推荐某种高层任务的做法,比如用户注册、登录系统等。本文只关注 PHP 长期发展过程中容易让人困惑的底层任务。
它不是万能方案,也不是唯一方案。下面介绍的方法未必适合你的具体场景,达成同样目标的方法有很多。尤其是高负载 Web 应用,可能需要更特殊的解决方案。