在PHP中围绕基本OOP我的头脑

时间:2011-07-19 12:54:27

标签: php oop

我是一名经验丰富的程序员,并且经常使用OOP,所以我对这个概念非常熟悉。我在网络开发方面也很有经验。我不熟悉的是他们如何一起去。例如,假设我正在撰写一些论坛软件。我创建了一个类,用于处理和表示用户的“帖子”。我将创建从数据库加载它的方法,在屏幕上显示它以读取的方法,以及允许用户编辑内容的方法。

这就是我的困惑所在。我将指示Post对象从数据库加载内容,然后将其显示在表单中供用户编辑。表格在哪里提交信息?如果服务器上不再存在信息,如何将信息发送回Post对象?我是否必须重新创建post对象,将其提供给表单数据,然后执行更新方法?有没有办法让对象在服务器上持久化,直到不再需要它们为止?

如果我的问题没有多大意义,我道歉。如果我知道要问什么,Google就已经回答了我的问题。

5 个答案:

答案 0 :(得分:3)

为了解决这个问题,有一个名为 MVC (模型视图控制器)的流行pattern in OOP。给它一些理论读物并阅读一些实现。


  

这就是我的困惑所在。我将指示Post对象从数据库加载内容,然后将其显示在表单中供用户编辑。表格将在何处提交其信息?

通过HTTP到您的网络服务器。

  

如果服务器上不再存在信息,如何将信息发送回Post对象?

从持久性商店,通常这是一个数据库。

  

我是否必须重新创建post对象,将其提供给表单数据,然后执行更新方法?

是的,因为HTTP请求的无状态特性将您的应用程序命令为顶级请求。

  

是否有某种方法可以使对象在服务器上持久化,直到不再需要它们为止?

不确定。有一些物体“冰柜”允许你持久存放物品,如果你不再需要它们,你可以将它们从冰箱中取出。


提供MVC的PHP框架是symfony2。它解释了MVC在本文中是如何工作的:Symfony2 versus Flat PHP它很好地解释了MVC如何与任何基于HTTP的PHP脚本/应用程序一起工作。

sourcecode is located on github如果您更喜欢阅读代码。

答案 1 :(得分:0)

在PHP中,当页面加载结束时,一切都会消失。常规帖子(如在HTTP-post中)针对特定文件,您可以说是一个帖子处理程序。在帖子中,获取已编辑的论坛帖子的ID会很好。通过id从数据库中获取当前版本,使用编辑的数据更新对象,然后保存。

答案 2 :(得分:0)

我认为问题的一部分是你在思考一切都应该是一个对象。在PHP中,您可以在必要时构造对象。我建议将POST数据视为对象在PHP中并不直观;你可以做到,但你会遇到你建议必须定义一切的问题。另一方面,我发现定义usersession对象可以简化代码并使其更直观。

答案 3 :(得分:0)

基本上是的,你将重新创建对象。在PHP中,对象的实例化和杀死比在其他语言中做的要多得多。您可以将对象序列化到会话中,但为了保持RESTful,您不应该根据会话的状态发出请求。此外,在此期间,帖子可能已从数据库中更改或消失,因此您无论如何都应该再次检查数据库。只需通过HTML表单/ URL /请求传递足够的信息,以重新创建更新数据库中帖子所需的状态(这通常意味着传递帖子ID)。

答案 4 :(得分:0)

只有单页加载时,对象才会存在。在那之后,一切都被摧毁了。因此,重新组装该对象(例如主键)所需的任何信息都需要通过下一个HTTP请求(通常通过在表单中​​提交)返回给您。