php - PHP(或任何非持久环境)中的 OO 问题

标签 php oop persistence

除非你把 QBASIC 追溯到我小时候,否则我五年前在大学里学会了面向对象范式编程,所以我了解它是如何工作的。然而,我很难在大型数据库驱动的 PHP 应用程序中实现它,因为每次页面加载时所有内容都会重新初始化。唯一真正的持久性是数据库,但是从数据库中提取所有数据并在每个页面加载时重建所有对象听起来像是很大的开销,但没有多大好处,因为我只需要在下一个页面重新做一遍页面加载。

此外,当我尝试将应用程序重构为 OO 时(现在是第三次尝试),我遇到了此类问题:


存在一个名为“Person”的类,它包含多种属性。该类的扩展之一“Player”包含类型为“Player”的“父”属性。最初,没有一个玩家以任何 parent 开始,因此他们都将使用该字段初始化为 NULL。然而,随着时间的推移,父级将被添加到 Players 属性中,并引用其他已存在的 Player 对象。

然而,在 PHP 中,我不可避免地必须重建已经有 parent 的玩家的类结构。在这种情况下,如果我实例化一个具有尚未实例化的 Player 作为父级的 Player - 我就会遇到问题。


处理 PHP 时是否有必要缩小 OO 编程的范围?

最佳答案

您将 OOP 概念与 HTTP 和持久性概念混淆了。

您的问题根本不是关于 OOP 的,而是关于跨多个 HTTP 请求持久保存 OOP 数据的问题。

PHP 不会自动跨 HTTP 请求持久保存对象 - 这由您来处理(在您的情况下,就像您所说的那样:“从数据库中提取所有数据并重建每个对象上的所有对象”)。页面加载”)。

关于php - PHP(或任何非持久环境)中的 OO 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4683700/

相关文章:

node.js - 从 node.js 应用程序增加持久计数器的最快方法?

php - 设置无密码的 PDO 连接

javascript - JQUERY 和 JAVASCRIPT OOP

java - 具有两个查找值的 Hibernate OnetoOne 映射

javascript - 添加使用对象方法的单击事件处理程序

python - 我什么时候应该使用 setUpClass 什么时候使用 __init__?

Python 持久套接字连接

php - mysqli_fetch_array 在 php 7 中不起作用

php - 从 phpmyadmin 动态检索多个图像

php - usort 以相反的顺序返回数组