页面类指导

时间:2013-01-24 02:01:39

标签: php oop

我正在试图找出如何查询数据库并在多个页面上以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>....;
}

1 个答案:

答案 0 :(得分:1)

我会看一下Zend Paginator组件。您可以下载并单独安装。您可以使用Zend_Paginator_Null_Adapter或数据库,并帮助它为您生成页码。您需要做的就是确保您的界面正在更改页码和结果数量。

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