假设我们有一个 PHP 类,它在 CMSPage
中生成 PHP对象。Page
在类内部,我们有一个名为 的函数,它返回系统中所有页面GetPages()
的对象数组。Page
如果我们想在表格中输出这些,我们可以这样做:
foreach(Page::GetPages() as $page)
{
echo $page->title.'<br />';
}
这是一个非常干净的解决方案,但我们实际上是在执行两个循环,而我们只需要运行一次。我在开发客户委托的定制 CMS 时遇到了这个问题,他们现在希望我们对其进行大修(仅仅是因为速度)。
我在想最好GetPages()
从类中删除该函数,并在管理界面上执行以下操作:
$pages = "SELECT `id` FROM `ig_pages`";
$result = Database::Singleton()->Query($pages);
while($page = $result->fetch_object())
{
$this_page = new Page($page->id);
echo $this_page->title.'<br />';
}
显然,从架构的角度来看,该函数确实应该包含在Page
类中,但我对循环有效运行两次感到担忧。任何人都可以为此提出更好的方法吗?