首页 / 知识
关于oop:面向对象还是不面向PHP?
2023-04-15 01:03:00

PHP Object Oriented or not?我有一个编写的Web应用程序的开始,没有使用PHP的面向对象功能。 我真的不知道返回并重写我已经完成的部分是否值得。面向对象的PHP是否值得重写一个体面的应用程序的全部或一部分? 鉴于您的应用程序不完整,我想说将其重新构建为基于对象的应用程序可能会有所帮助。 要考虑的一件事是最终应用程序的预期大小。在一定复杂度以下,除了学习经验以外,基于对象的方法可能会过大。 我开始避开像瘟疫之类的物体,因为我在大学类上对它们的最初介绍很糟糕。最近我不得不从事一个在php对象中实现的项目。进行所需的更改比其他项目容易得多。从那以后,我就经常在对象模型中工作,发现它非常方便快速创建和维护。 只是不同意共识...在大多数情况下,我不会说。无论如何,这不是关于商业代码的学术练习。如果它可以正常工作,请不要重写它。如果您必须去更改/添加位,则应按照面向对象的实践进行重构(无论如何,不?鼋龀鲇诖四康模琒O上有很多关于重构的文章。) 在实践中,如果您没有做很多OOP,那么您将从小处着手,并对此有所了解。 一旦您掌握了基础知识,良好的初学者设计模式指南(我喜欢Head First本书)将非常有用。大多数PHP书籍都会教给OOP相当差的知识。他们教您有关继承的知识,但通常不会教您有关松散耦合和偏爱继承而不是继承的知识。一本设计模式书将使您对此有更深入的了解。 PHP仍然因无法正确执行" OO"而享有盛誉。我认为这不公平,但这反映了这样一个事实,即人们无需真正理解OOP就可以轻松上手。我会大吃一惊,说大多数PHP程序员(称其微不足道-称其为51%)对OOP不满意。我认为用PHP进行良好的OO是有可能的,如果您已经熟悉该语言,那么这是一种提高技能的好方法。 编辑: 只需添加一些免责声明... 典型答案:"取决于。" 我倾向于将显示页面写为从头开始,从到 html>脚本页面。但是该页面上发生的事情是对象。金达就像一个穷人的ASP。虽然您可以具有基于OOP的输出,但我一直认为对于将数据转储到浏览器这样繁琐的任务来说,它太麻烦了。 因此,业务规则和数据访问是面向对象的。演示文稿是脚本。 如果您有不是OOP的业务规则,我会认真考虑在两??个条件下将它们写为对象:(1)是"您有时间/精力/金钱吗?",(2)是"您有一个好的PHP IDE,可以使您的生活更轻松吗?"如果它有效,并且更改它意味着在Notepad中编写,那么我将其称为完成。 :-) 学习面向对象的技术将非常有用,尤其是将来使用其他语言进行编程时。 由于您只是刚刚启动了应用程序,因此可以重写和改进您编写的部分。这取决于您的截止日期。 我不会说这很关键,但是如果您要进一步使用该应用程序,我建议您现在就进行操作,尽管这并不是一项艰巨的任务。我要说,一个编写良好的OOP程序的可维护性可能会远远超过前期成本。尤其是当您考虑到您将能够在进行过程中重构许多代码时。 有两种可能性:要么您的应用程序是一次性的,仅需立即运行,就永远不会被触摸,改编,扩展或修改,否则您的应用程序将成为您将继续使用的东西的开始并长时间使用。 如果是前者,请不要破坏完全可用的代码。您的时间与您有更好的关系。 如果是后者,则必须牢记有关PHP的一个重要事实,那就是:写得不好的PHP是维护的噩梦。没有写得不好的Perl那样糟糕-因为那是什么? -但非常严重,以至于您迟早会强烈希望偷窃一台时光机,回到写您现在发现自己正在维护的代码的那一刻,然后用冰镐刺入眼中。 因此,如果您要随着时间的推移维护此代码,请花一些时间正确地进行操作。这意味着:某种模板系统,HTML内没有嵌入PHP标记,用于单独功能的单独文件以及类classs类! 您的眼窝会谢谢您。 在我看来,我们phper可以彻底抛弃Object(类实例)的概念,我们只需要Array和Mode类: 所有处于初始模式的数组都支持其方法的任何数组功能:
使用
任何模式类中都没有 处于某个模式的数组仍可以使用数组函数作为其方法,但是在使用其中任何一个之后,该数组将切换回基本数组模式, 根本思想是以数据为中心的编程,我们需要将数据(数组)和活动(类方法)分开。 我们可以修改PHP引擎,以摆脱OO(面向对象)的一部分,并支持Mode Class,我们可以将其称为MyPHP。 例如:
我想在这里重申其他答案。这取决于应用程序的大小以及您想了解多少有关OOP的知识。我会谨慎使用PHP来学习OOP。 关于多少PHP是面向对象的... PHP4带有一些OOP元素,PHP5更好,但是还没有融入到语言中。 PHP可以双向运行,而且我个人希望您可以选择。 不,我认为如果该应用程序正在运行,则无需重写它。 我想说的是,尝试OO只是因为如果正确的话,您所拥有的东西比程序上的要容易得多,而重新使用 我还要说的是,OO比程序更井井有条。如果您的规模较小,则可以轻松地获得或不获得草率的代码OO。但是,当您进行较大的项目时,您的程序必须更加有条理并经过深思熟虑。在某些较大的项目中,OO往往会迫使您变得更有条理,使事情变得容易一些。 |
最新内容
相关内容
linux无效对象的命令?
linux无效对象的命令?,软件,系统,单位,网络,管理,术语,检测,电脑,环境,风险,linux疑问:普通用户的ifconfig命令无法执行,如何解决?建议这个操linux命令和应用程序?
linux命令和应用程序?,软件,系统,环境,管理,基础,情况,位置,电脑,工具,中心,在linux下如何装应用程序?需要什么命令啊首先从官网下载hdf5,根据pythonPandas Series对象有哪些属
pythonPandas Series对象有哪些属性?,工具,数据,数字,分析,培训,属性,数据类型,数组,对象,索引,想必大家都知道pandas,它是基于Numpy的一种工具python是面向对象还是面向过程的
python是面向对象还是面向过程的,数据,代码,基础,形态,培训,术语,设计,对象,过程,语言,Python虽然是解释型语言,但从设计之初就已经是一门面向实现Python对象的持久化存储
实现Python对象的持久化存储,数据,对象,系统,函数,培训,标准,环境,管理,参数,文件,Python中有个序列化过程叫作pickle,它能够实现任意对象与文python之访问对象的元数据
python之访问对象的元数据,数据,异常,培训,属性,模块,对象,类型,定义,文档,实例,当你对一个你构造的对象使用dir()时,可能会发现列表中的很多python之执行对象
python之执行对象,代码,数据,信息,概念,培训,通用,对象,属性,方法,赋值,有时候我们会碰到这样的需求,需要执行对象的某个方法,或是需要对对象的Python之数据库游标对象详解
Python之数据库游标对象详解,软件,代码,一致,培训,数据库,游标,对象,方法,事务,操作,常用数据库:MySQL、Oracle、SQLite但是包嵌入到Python中Python 中的一切皆对象
Python 中的一切皆对象,代码,数字,包装,培训,对象,函数,赋值,血统,字符串,变量,在Python中,OOP是完全不是必须的,在初学阶段也不需要使用类,利用Python类和对象
Python类和对象,代码,培训,对象,实例,定义,关键字,函数,问题,顶层,全名,刚接触python中的类和对象,我也和大多数小伙伴一样迷茫,不知道它和我所Python中JSON 对象有哪些特点?
Python中JSON 对象有哪些特点?,名称,信息,代码,培训,数据,观察,对象,嵌套,数组,特点,JSON对象的结构是什么样子呢?上面代码中的obj就是一个JSPython中的对象
Python中的对象,数据,连续,代码,培训,概念,对象,内存,类型,初始化,静态,Python中一切皆是对象。————GuidovanRossum(1989)这句话只要你学