Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php OO代码在典型web应用程序上下文中的优缺点_Php_Oop_Web Applications - Fatal编程技术网

Php OO代码在典型web应用程序上下文中的优缺点

Php OO代码在典型web应用程序上下文中的优缺点,php,oop,web-applications,Php,Oop,Web Applications,我很想了解使用OOP范式而不是过程开发web应用程序的优缺点 我对……不感兴趣 面向对象与过程 上下文而不是典型的web应用程序,这意味着客户端向服务器发出HTTP请求的分布式应用程序 我的问题的动机是,我一直在开发一个在公司内部网上运行的web应用程序,希望这个应用程序能够被最终取代我的人“轻松”维护,这样,应用程序就不会被一些过度抽象、过度工程化的付费解决方案所取代,只有极少数人会喜欢使用这些解决方案 我在codereview发布了评论,但没有得到太多反馈。然后我在reddit/r/PH

我很想了解使用OOP范式而不是过程开发web应用程序的优缺点

我对……不感兴趣

  • 面向对象与过程
  • 上下文而不是典型的web应用程序,这意味着客户端向服务器发出HTTP请求的分布式应用程序
我的问题的动机是,我一直在开发一个在公司内部网上运行的web应用程序,希望这个应用程序能够被最终取代我的人“轻松”维护,这样,应用程序就不会被一些过度抽象、过度工程化的付费解决方案所取代,只有极少数人会喜欢使用这些解决方案

我在codereview发布了评论,但没有得到太多反馈。然后我在reddit/r/PHP上发布了我在codereview上的帖子,但进展并不顺利

目前,我的印象是,绝大多数“web开发”社区都认为OO是一条发展之路。我很难理解为什么,但我有一种感觉,我公司雇佣的下一位开发人员也将坚定地相信为web应用程序开发OO,因为这似乎是当今的常态

我想同意他们的观点,加入到这股潮流中来,有人能试着向我解释一下面向对象编程在典型的web应用程序环境中的优缺点吗

在做一些研究时,我遇到了这个问题,这使得我更难做出改变

其中一条评论中的一段小引语:

面向对象编程适用于那些不能正确设计软件的人,或者是那些涉及非常大或复杂的非web项目的有能力的程序员。如果我要编写一个在PC上运行的事件驱动游戏,我不会选择程序编程


现在很多web应用程序框架的卖点是它是一个MVC框架。您拥有与视图和模型交互的控制器。模型是您的业务和数据层,其中包含业务对象/实体/数据对象-基本上是使用消息相互通信的对象。对象本身仅限于它所独有的内容以及它所能做的事情

这些边界/限制在某种程度上使其他人更容易理解您的代码以及如何修改代码。它还有助于分别对这些层中的每一层进行单元测试

我想,如果您希望快速开发应用程序,控制器查询数据库并向视图发送信息,您也可以这样做。但测试的唯一方法是运行应用程序,检查是否有故障,修复,重新启动,然后再次测试。。你不会节省很多时间

编辑

您使用的是一个包含业务逻辑的控制器。但是您的模型看起来非常像OO模型应该是什么。所以我要问的问题是,如果我破坏了这个特定于域的控制器,会发生什么?然后我必须创建一个UserController和一个DepartmentController,UserController呈现与CRUDing用户相关的所有视图。这值得麻烦吗?绝对地其他人可以加入并使用AdminController或ReportingController,而无需担心您对该控制器所做的更改


如果你的一位同事想看到部门部分的一些变化,你不必担心其他的。

首先,我根本不是一个Php人,但你的自我表扬问题似乎很有趣,所以我研究了一下。我的回答是一般性的,与面向对象技术或web技术的特定实现无关

对象将数据和相关功能封装在一块中。这并不是说您将整个应用程序封装在一个巨大的对象中。很多都与您如何分析问题、识别对象和使用它们有关

作为请求-响应的web应用程序在90年代早期可能是正确的,但现在web应用程序已经成熟。没有必要遵循典型的请求-响应场景。你看过股票跟踪应用程序吗?它不会等待请求发送响应。只要数据可用,它就会发送。我开发了在线候选人测试web应用程序,它可以在固定的时间内提问。一旦时间结束,无论用户是否“请求”结束测试,都将结束测试,并显示结果。即使it用户机器关闭或出现网络问题,它也会记住,不会再问同样的问题,也不会有额外的时间


是的,有些糟糕的程序员或“IT人员”完全不知道OO分析。他们以非常程序化的方式对对象或对象进行编程。他们的工作结果是一个请求-响应样式的web应用程序,有3个全局变量和一个“z”名称空间,但这并不意味着应该归咎于OO范式本身。它属于那些不太了解它的人,因为他们在正确的地方应用它

你引用的那个家伙声称运行phpclasses的人“有能力”,这一事实很清楚地表明他不知道自己在说什么。值得一提的是,我想说,在web开发中使用OOP的好处与在任何类型的开发中使用OOP的好处非常相似。OOP或程序,谁在乎呢。@Janihartkainen我不知道你在谈论的人或他的“开发人员技能”,但我怀疑表扬某人是否是一个人在某个特定领域技能的体现。@Bart我公司雇佣的下一个开发人员可能会说,这对我很重要,或者我需要用有力的论据支持我的做事方式(我已经有了一些)或者我需要使用OOP范式重构我的应用程序