データベースにクエリを実行し、結果を複数のページにoopで出力する方法を理解しようとしています。
ページには異なるクエリとクエリの数があり、一部は同様のレイアウトになりますが、他のページは完全に異なります。
これは、必要なSQLフィールドと、場合によってはデータを出力するためのhtmlを保持する各ページのクラスを作成するための正しい方向ですか?それとも、より経験豊富なoopデザイナーは別の方法でそれを行いますか?
例(ひどい擬似コードの謝罪):
abstract class Page(){}
class SearchPage extends Page()
{
private $sql;
function output(){};
}
class ProfilePage extends Page()
{
private $sql;
private $sql2;
function output(){}; ← dynamic method that can output both sql and sql2??
}
class DatebaseFetch()
{
__construct($sql)
{
$this->$sql=$sql;
}
function results()
{
...get db results...;
return $results;}
}
}
class PageFactory()
{
function getPage($page)
{
return new $page.Page();
}
}
$page=PageFactory::getPage($_SERVER['PHP_SELF']);
$query=$page->sql;
$db=new DatabaseFetch($query);
$results=$db->results();
$page->output($results);
コードの要点は、この手続き型コードと同等のoopを取得することです。
Search Page:
$db=new PDO("mysql:host=localhost;dbname=test;","test","test");
$db->query("select search items from table");
while($row=$db->fetch(PDO::FETCH_ASSOC)){
echo <html>....;
}
Profile Page:
$db=new PDO("mysql:host=localhost;dbname=test;","test","test");
$db->query("select profile items from table");
while($row=$db->fetch(PDO::FETCH_ASSOC)){
echo <html>....;
}