2

データベースにクエリを実行し、結果を複数のページに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>....;
}
4

1 に答える 1

1

ZendPaginatorコンポーネントを見てみましょう。ダウンロードして個別にインストールできます。Zend_Paginator_Null_Adapterまたはデータベースのものを使用して、ページ番号を生成するのに役立てることができます。あなたがする必要があるのはあなたのインターフェースがページ番号と結果の数を変えていることを確認することです。

http://framework.zend.com/manual/2.0/en/modules/zend.paginator.usage.html

于 2013-03-04T06:21:16.483 に答える