面向对象设计用于PHP应用程序

5

我们的学校项目要求我们定义一个设计文档,描述一个PHP应用程序的架构。

我们可以自由决定在文档中包含什么内容。

我们的教授建议加入很多(UML)图表。

他还要求我们考虑类图,但要小心,因为PHP不是完全面向对象的。

我的问题是:针对PHP应用程序,域驱动面向对象设计是否可行?在进行PHP面向对象编程时需要考虑什么?有哪些优缺点?有关PHP面向对象编程和最佳实践的任何有用资源吗?

4个回答

8
在不了解应用程序的目的的情况下描述任何应用程序的架构都相当困难,所有复杂度较高的应用程序(包括PHP)看起来都不同。其次,PHP5提供了类/对象和通常的OO元素,因此将其描述为“不完全面向对象”是误导性的。如果你的意思是可以采用过程化方法而无需受到对象的限制,那么是的,但如果你想让所有东西都成为对象,那就是你的选择。关于领域驱动设计,PHP是否可行?当然可以。特定的架构方法通常不依赖于技术。最佳实践、面向对象设计的优缺点适用于大多数编程语言,而PHP则相当自由,可以自由地决定如何组织代码。你可能会发现PHP网站上的这个最佳实践演讲非常有用 ;)

2

现在可以说PHP完全支持面向对象编程。它提供了你需要的一切,但你不必强制写面向对象的代码。

有两本书对我理解PHP中面向对象原则帮助很大:

  • 《PHP实战》 (Manning)
  • 《Zend PHP5学习指南》 (Zend)

2
目前大多数使用的面向对象语言都不是完全面向对象的。每种语言都有其特殊之处和需要注意的地方。因此,我认为对于大多数简单项目来说,PHP已经足够面向对象了。我曾经参与过Zend Framework的开发,它被设计为一个面向对象的类库,包括设计模式等。
对于PHP,我的建议是要关注其SPL组件,该组件为许多基本类提供了接口。
如果你的老师说“在设计文档中放入任何你想要的东西,UML图表很漂亮”,那我认为这很不严谨。设计文档是软件工程中重要但常常被低估的部分。你的老师应该向你展示好的设计文档的例子或模板。

0

OO首先是一种设计方法论。

因此,可以提出一个OO设计,它可以在过程性语言中实现。我曾经看到过这样的实现方式应用于C和COBOL项目。并且,这让我相信,几乎所有OO的优点都与设计有关,而不是与语言实现有关。

因此,是的,您可以提出具有大量UML(类图、用例、泳道等)的OO设计,并在php中实现它(使用类或不使用类)。

无论如何,php实际上是OO的超集,因此如果限制自己只在类内(即方法中)使用类和函数,就可以实现OO。

唯一缺少的将是接口定义,但在这种(未)限制类型检查的语言中定义接口是没有多少意义的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接