PHP开发的一些最佳模式和实践是什么?

Sri*_*ddi 22 php

我主要是在寻找与mysql一起工作时的良好开发实践.我搜索了一些问题,但未找到任何相关问题.如果有人分享他们通过经验获得的实践和智慧,我将不胜感激.

除了一些编码标准,我也在寻找设计标准和常见的架构实践.

背景:我的职业生涯开始于Java,多年来我转到了C#/ .NET领域.我已经练习建筑师超过3年了.只是添加了这个给人们一些想法.

Noa*_*ich 26

我建议你熟悉PHP的历史,我知道这样做让我更加了解PHP的现状和来源.

简而言之,PHP是由Rasmus Lerdorf编写的,它为C代码提供了简单的包装函数,这些函数实际上正在进行繁重的工作,因此他可以使用更简单的语言/语法来编写需要动态运行的模板.PHP及其周围社区的发展最好被描述为有机的.就像其他有机生长的东西一样,它不仅有点凌乱,不对称,而且非常一致.

一旦理解了PHP及其社区,就需要将PHP包含在它的所有内容中以及它所不具备的一切内容中.这个想法最好由Terry Chay在他的文章PHP中提供,而不是PHP.他特别谈到了时髦缓存的概念,但他抓住了PHP编码的概念,好像它是PHP而不是(在这里插入最喜欢的语言)比我见过的任何人都更好.换句话说,不要试图将PHP变成Java,C#,Ruby等,因为如果你这样做,你就会失败并且你会讨厌你的生活.

看看 PHP如何正确完成?.

我必须说,你必须首先,最后,并始终避免大多数初学PHP开发人员使用意大利面条代码反模式的倾向.换句话说,如果你发现你在一个PHP脚本中编写包含sql查询,数据操作,数据验证和html输出的代码,那么你做错了.

为了避免这种情况,了解面向Web的设计模式的本质将会有所帮助.这当然妨碍了对面向对象编程的熟悉.但是,一旦你在PHP中学习了面向对象编程的基础知识,就可以研究MVC设计模式.您不必完全实现这一点,但使用模型 - 视图 - 控制器的基本思想将允许您避免大多数新手倾向于创建的blob脚本问题.

在这一点上,我强烈建议您使用在网络上找到的任何代码片段.即使你在书中找到它,你也要考虑这本书的年龄.PHP作为一种语言已经取得了很长的进步,你不能只是采用面值的代码样本,因为根据他们的年龄,他们可能会使用在3.x或4.x中有效的变通方法,但不再是必要的新功能.

一件好事是研究那里的各种框架.评估你喜欢什么,不喜欢什么.甚至可以处理随框架文档提供的每个快速入门,以便您可以开始了解您喜欢和不喜欢的内容.我强烈建议您查看框架中的代码以及其他几个开源项目,以便您可以了解其他人如何使用PHP执行操作.再说一遍,因为每个PHP开发人员都有自己的烦恼和细微差别,所以我们都不是一直都是正确的.事实上,大多数时候使用PHP会有几种很好的方法可以做某事.

如果你想更好地理解框架正在实现的模式,并且通常在SO的常用白话中抛出,我建议你阅读FowlerGoF.他们将教授您将在开发工作中使用的基本设计模式.

特别注意以下内容:

  • 包含大量功能的函数文件.这很可能代表需要将函数直接放在需要它们的脚本中,或者它也可能表示有机会创建一些更通用的函数,这些函数可以用来完成一些高度特定的函数的作用.当然,如果你正在构建有凝聚力,封装良好的类,你不应该遇到这个问题.
  • 尽一切力量.这是一个blob反模式,真的很讨厌.在这种情况下,您需要确定内聚和封装正在分解的位置,并将这些点用作将类拆分为几个更小,更易维护的类的机会.
  • 不使用参数化查询或至少是转义参数的SQL查询.非常非常非常糟糕.
  • 任何未执行验证或仅在客户端执行验证的实例.在开发网络时,保持网站和用户安全的唯一方法是假设其他人都是黑帽子.
  • 突然强迫使用模板引擎的愿望.PHP是一种模板语言.在使用模板引擎之前,请确保您有明确的理由在网站上添加其他图层.

如需进一步阅读,请查看以下内容:

PHP应用程序设计模式
保护PHP - 有助于您了解最常见的批评.
strip_tags和mysqlirealescapestring的安全性
每个PHP程序员应该知道
如何构建ORM的
最佳方式组织类层次结构
PHP应用程序的主要组件/层
为什么使用Framework for PHP 推荐的PHP
安全培训


Kal*_*ium 10

  • 使用编码标准.
  • 使用单元测试.PHPUnit和SimpleTest是PHP中的主要xUnit系统.
  • 面向对象.
  • 使用版本控制.任何版本控制,只需使用它.
  • 如果适用,请使用框架.Zend,CodeIgniter,Symfony和CakePHP是主要的.
  • 如果没有框架,至少使用ORM.Propel和Doctrine是主要的.
  • 文献.重.使用PHPdoc或类似的.

PHP有很多工具可供使用.请使用它们,并编写良好的可维护代码.你会让每个人都更快乐.