首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP开发的一些最佳模式和实践是什么?

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

Stack Overflow用户
提问于 2009-04-18 04:02:31
回答 5查看 4.6K关注 0票数 22

我主要是寻找良好的开发实践,特别是当与mysql一起工作时。我搜索了所有的问题,但没有找到任何相关的问题。如果有人分享他们从经验中获得的实践和智慧,我将不胜感激。

除了一些编码标准之外,我还在寻找设计标准和通用的架构实践。

背景:我的职业生涯始于Java,多年来我转向了C#/.NET领域。我从事建筑师行业已经三年多了。添加这个只是为了给人们一些想法。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-04-18 07:34:16

我建议您熟悉PHP的历史,我知道这样做让我对PHP今天是什么以及它来自哪里有了更多的理解。

简而言之,PHP是由Rasmus Lerdorf编写的,目的是为实际执行繁重任务的C代码提供简单的包装器函数,以便他可以使用更简单的语言/语法来编写需要动态行为的模板。PHP的发展和它周围的社区最好的描述是有机的。就像其他有机生长的东西一样,它不仅有点混乱,不对称,而且完全不一致。

一旦您了解了PHP及其社区,您就需要拥抱PHP的一切,无论它是什么,或者不是什么。Terry Chay在他的文章PHP without PHP中提出了这个想法。他特别谈到了时髦的缓存的概念,但他抓住了PHP编码的概念,就好像它是PHP一样,而且(在这里插入最喜欢的语言)比我见过的任何人都要好。换句话说,不要试图把PHP变成Java,C#,Ruby等等,因为如果你这样做了,你会失败,你会讨厌你的生活。

看看How is PHP Done the Right Way?吧。

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

为了避免这种情况,了解一些面向web的设计模式的本质是很有帮助的。当然,这就排除了对面向对象编程的熟悉。但是,一旦您学习了PHP中面向对象编程的基础知识,就需要学习MVC设计模式。您不必完全实现此功能,但使用模型-视图-控制器的基本思想将允许您避免大多数新手倾向于创建的blob脚本问题。

在这一点上,我强烈建议您对您在web上找到的任何代码片段持保留态度。即使你在一本书中找到它,你也必须考虑这本书有多老。PHP作为一种语言已经取得了相当大的进步,你不能仅仅从表面上看代码样本,因为根据年龄的不同,他们可能正在使用在3.x或4.x中有效的变通方法,但对于新的特性不再需要。

有一件很棒的事情要做,那就是研究各种框架。评估一下你喜欢什么,不喜欢什么,甚至可以按照框架文档中提供的每个快速入门,这样你就可以开始了解你喜欢什么,不喜欢什么。我强烈建议您审阅这些框架中的代码以及其他几个开源项目,这样您就可以了解其他人是如何在PHP中做事情的。再说一次,对此持保留态度,因为每个PHP开发人员都有自己的烦恼和细微差别,而且我们中没有人总是正确的。事实上,在大多数情况下,使用PHP会有几种很好的方法来做一些事情。

如果您想更好地理解由框架实现的模式,并且这些模式通常使用通用的术语,那么我建议您阅读FowlerGoF。他们将教授您在开发工作中将使用的所有基本设计模式。

特别要注意以下几点:

包含大量函数的

  • 函数文件。这很可能代表需要将函数直接放在需要它们的脚本中,或者也可能表示有机会创建一些更通用的函数,以满足几个高度特定的函数的角色。当然,如果你正在构建内聚的、封装良好的类,你应该不会遇到这个问题。
  • do everything类。这是一个blob反模式,真的很糟糕。在这种情况下,您需要找出内聚和封装被破坏的地方,并利用这些点将类分解为几个更小、更可维护的类。不使用参数化查询或至少不使用转义参数的
  • SQL查询。非常、非常、非常糟糕。
  • 任何不执行验证或仅在客户端执行验证的实例。在为web开发时,保证站点和用户安全的唯一方法是假设其他人都是黑帽。
  • 使用模板引擎的一种突然的强迫症。PHP是一种模板语言。在使用模板引擎之前,请确保您有明确的理由将另一个图层添加到您的网站。

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

PHP Application Design Patterns

Defend PHP --帮助您了解最常见的批评。

Security of strip_tags and mysqlirealescapestring

What should Every PHP Programmer Know

How to Structure an ORM

Best Way to Organize Class Hierarchy

Main Components / Layers of PHP App

Why use Framework for PHP

Recommended Security Training for PHP

票数 26
EN

Stack Overflow用户

发布于 2009-04-18 04:33:47

  • 使用编码标准,
  • 使用单元测试。PHPUnit和SimpleTest是PHP语言中主要的xUnit系统,
  • 是面向对象的,
  • 使用版本控制。任何版本控制,只需使用它。
  • 如果适用,请使用框架。Zend、CodeIgniter、Symfony和CakePHP是最主要的。
  • 如果没有框架,至少使用一个对象关系模型。推动和教义是主要的ones.
  • Document.很严重。使用PHPdoc或类似产品。

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

票数 10
EN

Stack Overflow用户

发布于 2009-04-18 06:40:42

使用PDO或mysqli。使用其中之一将为您提供准备好的语句,这会更安全、更有效。我不敢相信我看到这么多使用古老的mysql接口的示例和教程。例如,如果您决定尝试postgres,PDO还将使切换到不同的数据库系统变得更加容易。

您可以考虑使用Doctrine (http://www.doctrine-project.org)。它有自己的学习曲线,但提供了非常方便的功能。对我来说,最方便的部分是表创建/测试数据加载函数。就我个人而言,我更喜欢编写自己的SQL并使用PDO执行它,而不是在生产中大量使用ORM。

主要学习SQL和MySQL。http://www.kitebird.com/mysql-book/这本书很棒。PHP方面不是很强;PDO处理了大部分内容。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/762855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档