我目前在我的网站结构设计方面陷入僵局。目前我正在使用对象来简化我的网站的结构(我有一个人对象、一个派对对象、一个职位对象等......),理论上,这些对象中的每一个都是来自它各自表中的一行数据库。
现在从我所学到的,OO Design 有利于保持简单和易于使用/实现,我同意这一点 - 它使我的代码看起来更加干净和易于维护,但我感到困惑的是如何我开始将我的对象链接到数据库。
假设有一个人员页面。我创建了一个人对象,它等于一个 mysql 查询(这是合理的),但是那个人可能有多个位置,我需要在单个页面上获取并显示这些位置。
我目前正在做的是从 person 对象中使用一个名为getPositions的方法,该方法从 mysql 获取数据并为每一行创建一个单独的位置对象,将数据作为数组传递。这样可以将查询降到最低(每页 2 个),但它似乎是一个可怕的实现,对我来说,它违反了面向对象设计的规则(如果我想更改 mysql 行,我需要将其更改为多个地方),但另一种情况更糟。
在这种情况下,替代方法只是获取我需要的 ID,然后创建单独的位置,传入 ID,然后在构造函数中从数据库中获取行。如果你每页有 20 个职位,它可以很快加起来,我已经读过Wordpress 因其每页的大量查询和 CPU 使用率而受到批评。在这种情况下我需要考虑的另一件事是排序,这样做意味着我需要使用 PHP 对数据进行排序,这肯定不能像在 mysql 中那样高效。
当然,页面将(并且可以)被缓存,但对我来说,这几乎就像对构建不佳的应用程序作弊一样。在这种情况下,正确的解决方案是什么?