【问题标题】:How can i handle a form submit using REAL OOP in PHP如何在 PHP 中使用 REAL OOP 处理表单提交
【发布时间】:2011-01-27 22:17:45
【问题描述】:
我习惯于 java 和创建 UML.. 我想知道 PHP 怎么可能是 OOP,对象只有在你发出请求之前才会存在.. 然后它们会销毁,所以如果我使用数据库来创建一个类和将成员(变量)添加到类中,它们将无用.. 我无法将主系统对象从一个页面传递到另一个页面,或者类似的,那么 PHP 如何与 jave 进行比较?你从不做OOP ..我的意思是真正的OOP ..不创建类,事实上你的索引将是一个带有一些对象实例的程序文件然后呢?如果我制作一个 html 表单并且我想提交数据怎么样。我必须调用一个不是类的文件是一个 php 程序文件如果我用 POST 抓取提交的数据,你将从该文件中实例化一个类并在那里做一些逻辑.. 但对我来说那不是纯粹的 OOP.. 有人可以使用表单提交示例指出我正确的 OOP 方式吗?
谢谢!
【问题讨论】:
标签:
php
oop
model-view-controller
【解决方案1】:
查看任何最新的 php 框架以及它们如何处理表单。 (如 ZF 或 Yii)。
顺便说一句,您提到的“问题”也是客户端-服务器架构,而不是 PHP 的缺点。
每个请求都是一个新进程,带有一个新的 MAIN 或带有静态 main 函数的新类,它们实际上是相同的。
【解决方案3】:
您误解了面向对象编程的定义包括一个持久环境,其中的对象独立于页面请求而存在。恐怕没有。
PHP 确实做“真正的”面向对象编程。但是 PHP 的执行环境就像执行一个 CGI 程序:在页面请求时,程序启动,页面完成时程序结束。在该范式中,对象只能在页面生成内容时存在。因此,页面必须做的第一件事是加载框架以定义和实例化所需的对象,例如必须在页面请求周期内加载和保存其数据的数据库处理程序和对象映射器。一些框架还会使用您的代码和对象可以访问的页面请求数据创建对象,有时可以从对象内部访问。
但是 PHP 本身并没有提供这个,因为它不强制执行框架。它本质上是程序性的,因此如果您不想以这种方式工作,则必须添加一个框架来定义和创建所需的对象。
以这种方式做事有一个优势。这意味着页面的代码只需要关注单个页面请求。几乎所有与数据共享和多线程执行有关的问题都被推到可以无形处理的事物上,例如数据库和 Web 服务器。