是否面向PHP对象?

时间:2020-03-05 18:51:50  来源:igfitidea点击:

我有一个不使用PHP的面向对象功能而编写的webapp的开始。

我真的不知道是否值得返回并重写我已经完成的部分。面向对象的PHP是否值得重写一个体面的工作应用程序的全部或者一部分?

解决方案

回答

我不会说这很关键,但是如果我们要进一步使用该应用程序,我建议我们现在就进行操作,尽管这并不是一项艰巨的任务。我要说,一个编写良好的OOP程序的可维护性可能会远远超过前期成本。尤其是当我们考虑到我们将能够在进行过程中重构许多代码时。

回答

学习面向对象的技术将非常有用,尤其是将来使用其他语言进行编程时。

由于我们只是刚刚启动应用程序,因此可以重写和改进我们编写的部分。这取决于截止日期。

回答

典型答案:"取决于情况。"

我倾向于将显示页面写为从头开始,从<html>到</ html>脚本页面。但是该页面上发生的事情是对象。有点像穷人的ASP。虽然我们可以具有基于OOP的输出,但我一直认为这对于将数据转储到浏览器这样繁琐的任务来说太麻烦了。

因此,业务规则和数据访问是面向对象的。演示是脚本。

如果我们有非OOP的业务规则,我将认真考虑在两​​个条件下将它们写为对象:(1)是"我们有时间/精力/金钱吗?" (2)是"我们是否拥有一个可以使生活更轻松的良好PHP IDE?"如果它有效,并且更改它意味着用Notepad ++编写,那么我称之为完成。 :-)

回答

鉴于应用程序不完整,我想说将其重新构建为基于对象的应用程序可能会有所帮助。

要考虑的一件事是最终应用程序的预期大小。低于某种复杂度,除了学习经验外,基于对象的方法可能会过大。

我开始避开像瘟疫这样的天体,因为我在大学课堂上对它们的最初介绍很糟糕。最近我不得不从事一个在php对象中实现的项目。进行所需的更改比其他项目容易得多。从那以后,我就经常在对象模型中工作,发现它非常方便快速创建和维护。

回答

只是不同意共识……在大多数情况下,我不会说。无论如何,这不是关于商业代码的学术练习。如果它正常工作,请不要重新编写。如果我们必须去更改/添加位,那么就可以按照面向对象的实践进行重构(SO上有很多关于重构的文章,无论如何我们都在修改代码,而不仅仅是出于此目的)。

在实践中,如果我们还没有做很多OOP,那么我们将希望从小处着手并对此有所了解。

一旦掌握了基础知识,良好的设计模式初学者指南(我喜欢Head First本书)将非常有用。大多数PHP书籍都会教给我们OOP较差的知识。他们教我们有关继承的知识,但通常不会教我们有关松散耦合和偏重继承而不是继承的知识。一本设计模式书将使我们对此有更深入的了解。

PHP仍然因不"正确"进行OO而享有声誉。我认为这不公平,但这反映了这样一个事实,即人们无需真正理解OOP就可以轻松上手。我会大吃一惊,说大多数(很少有人称其为51%)PHP程序员对OOP不满意。我认为用PHP进行良好的OO是可能的,如果我们已经对这种语言感到满意,那么这是一种提高技能的好方法。

编辑:

只是添加一些免责声明...

  • 我对大多数PHP程序员不熟悉OOP的评论不适用于当前的SO读者!
  • 不建议我们对OOP不满意,这适用于我们不熟悉OOP的情况

回答

我要说的是,尝试OO是因为如果做对了,我们拥有的东西可以比程序容易地重用

我还要说的是,OO比程序更具组织性。如果规模较小,则可以轻松地获得或者不获得草率的代码OO。但是,当我们进行较大的项目时,程序必须更加组织和思考。在某些较大的项目中,OO往往会迫使我们变得更有条理,使事情变得容易一些。

回答

不,我认为如果该应用程序正常运行,则无需重写它。
PHP根本不是真正的面向对象。他们努力工作,但有时我认为即使PHP开发人员也无法真正理解OOP的意义。
如果我们想学习OOP(肯定是个好主意),请尝试使用像Smalltalk这样的真正的OOP语言来学习基本概念。 Java也不错2学习基础知识,尽管它也不是完全面向对象的

回答

有两种可能性:或者应用程序是一次性的,仅需立即运行,就永远不会被触摸,改编,扩展或者修改,否则应用程序将成为我们将继续使用和使用的东西的开端。很长时间。

如果是前者,请不要破坏完全可用的代码。你的时间更好。

如果是后者,则必须牢记有关PHP的重要事实,那就是:写得不好的PHP是维护的噩梦。不如Perl编写得不好,因为它是什么? -但足够严重,以至于我们迟早会有强烈的欲望去窃取时光机,回到回到编写现在自己维护的代码的那一刻起,并用冰镐刺入眼窝。

因此,如果我们要随着时间的推移维护此代码,请花一些时间正确地执行它。这意味着:某种模板系统,HTML内没有嵌入PHP标记,用于单独功能的单独文件以及类class类!

你的眼窝会谢谢你。

回答

我想在这里重申其他答案。这取决于应用程序的大小以及我们想了解多少有关OOP的知识。我会小心地通过使用PHP学习OOP。

至于多少PHP是面向对象的... PHP4带有一些OOP元素,PHP5更好,但是还没有融入到语言中。 PHP可以双向工作,我个人希望我们可以选择。