CMS でPage
PHP オブジェクトを生成するPHP クラスがあるとします。Page
クラス内には、システム内のすべてのページのオブジェクトGetPages()
の配列を返すという関数があります。Page
これらを表に出力したい場合は、次のようにすることができます。
foreach(Page::GetPages() as $page)
{
echo $page->title.'<br />';
}
これは非常にクリーンなソリューションですが、1 回だけ実行する必要があるのに、基本的に 2 つのループを実行しています。クライアントが委託したオーダーメイドの 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
クラス内に含める必要がありますが、ループが効果的に 2 回実行されることに懸念があります。誰でもこれに対するより良いアプローチを提案できますか?