我习惯于java和创建UML ..我想知道PHP如何才能成为OOP,这些对象只会在你发出请求之前生存..然后它们会被破坏,所以如果我使用数据库是无用的来创建一个类和将成员(变量)添加到类中,它们将无用..我不能将主系统对象从一个页面传递到另一个页面,或类似的,那么如何将PHP与jave进行比较?你永远不会做OOP ..我的意思是REAL OOP ..不创建类,实际上你的索引将是一个带有一些对象实例的程序文件然后呢?怎么样,如果我做一个HTML表单,我想提交数据..我必须调用一个不是类的文件是一个PHP程序文件是我用POST获取提交的数据,从该文件你将实例一个类并在那里做一些逻辑..但对我来说,这不是纯粹的OOP ..有人可以使用表单提交示例指出我正确的OOP方式吗?
谢谢!
答案 0 :(得分:4)
你误以为根据定义,面向对象编程包括一个持久的环境,其中的对象独立于页面请求而存在。我担心不会。
PHP确实做了“真正的”面向对象编程。但PHP的执行环境就像执行CGI程序一样:在页面请求时,程序启动并在页面完成时结束。在该范例中,只要页面生成内容,对象就可以存在。因此,页面必须做的第一件事是加载框架以定义和实例化所需的对象,例如必须在页面请求周期内加载和保存数据的数据库处理程序和对象映射器。一些框架还将创建具有页面请求数据的对象,您的代码和对象随后可以从对象内部访问这些数据。
但PHP并不提供本机,因为它不强制实施框架。它本质上是程序性的,因此必须添加一个框架,以便在您不希望以这种方式工作时定义和创建所需的对象。
以这种方式做事有一个好处。这意味着页面的代码只需要关注单个页面请求。几乎与数据共享和多线程执行有关的所有问题都被推送到可以无形地处理它的事情,比如数据库和Web服务器。
答案 1 :(得分:2)
查看任何最新的php框架以及它们如何处理表单。 (如ZF或Yii)。 b.t.w你提到的“问题”也是客户端 - 服务器架构,而不是PHP的减号 每个请求都是一个新的进程,带有一个新的MAIN或带有静态主函数的新类,实际上是相同的。
答案 2 :(得分:0)
“所以如果我使用数据库是没用的 创建一个类并添加成员 (变量)到班级,他们会 无用的“
听起来你想要object-relational mapper。有几种流行的PHP,如本previous question所述。