2

我目前正在尝试为自己构建一些不错的类,以更快地构建我的页面。

我目前有这个设置,

// page class
class Page extends DBC {
    // creates a page
    public function create($data = false) {
       echo 'SOME BASIC HTML TO SETUP PAGE';
       // pass the database connection var to content function
       content($this -> $dbc, $data);
       echo 'SOME BASIC HTML TO SETUP PAGE';
    }
}
// dbc class
class DBC {
    public $dbc;
    public function __construct() {
        // sets the database connection
    }
}

对于我创建的每个新页面,我只是在将我的类添加到脚本中之后执行此操作。

// content function
function content($dbc) {
    // some content
    // am able to use dbc
}
// new page object
$page = new Page();
// am able to use dbc var fine here too
$page -> dbc -> // execute a query
// create page
$page -> create();

但我现在面临的问题是如何最好地在我的DBC类中创建函数以使我的查询构建更快。我尝试将以下函数添加到类DBC中,

public static function query($q, $data, $options = array()) {
    // execute prepared query
    $q = $this -> dbc -> prepare($q);
    return $q -> execute($data);
}

但是我不能在我的content函数中使用它,因为只有数据库连接被传递给它,并且类query内的函数DBC在对象上下文中使用该连接。

解释我的问题后,我的问题如下;

最好在我的DBC班级中创建为我执行查询的函数static并传入现有的连接?

或者

DBC将整个对象传递给我contentPage类中的函数会更好吗,如下所示,

content(new DBC(), $data);

这样我就可以在对象上下文中使用函数。该类Page仍然需要由DBC该类扩展,因为我也需要在函数dbc之外使用 var 。但是,当它被扩展时,这content不会产生类的 2 个实例,而当传递给函数时,会产生一个类的实例吗?DBCPagecontent

感谢您花时间阅读此问题并提供任何答案!

4

2 回答 2

1

您应该查看 MVC(模型-视图-控制器)模式。你不希望你的 html/Page 代码和你的数据库代码混合在一起。如果您打算花时间创建数据库访问层,您应该继续将显示代码和数据代码分开。

如果现在完全分离 MVC 工作量太大,我建议您使用存储库模式进行数据库访问。它将在一个简洁的系统中为您提供所需的数据库方法,您可以从 Page 类中访问这些方法。

这个问题的公认答案为您提供了很好的信息: 在 MVC 中设置存储库模式

于 2012-06-14T20:36:10.530 回答
1

按照我的理解,我认为一个例子是最好的,所以你可以看看并根据你的要求进行改进。检查我在github
上写的这个类 并检查这个关于使用的要点 所以我想说的是,看看它并提出一个适合你需要的解决方案,或者你可以直接使用它......它当然是免费的

于 2012-06-14T20:39:59.500 回答