我需要一些关于如何为我正在处理的项目创建\处理数据库连接的建议\建议。我正在使用 PHP 5.4.3 为我的公司创建一个简单的工单系统,现在没有任何类型的身份验证,因为我还没有准备好应对这种复杂性。到目前为止,我正在计划以下结构
<? php
class Db {
private static $dbh = null;
static function open_connection() {
self::$dbh = new PDO(... }
static function query($sql) {
$result = self::$dbh->... }
static function fetch_array($result){
...}
...
}
class Workorder extends Db {
protected static $table_name = ...
...
public $wonum;
...
function instantiate {
//return workorder objects
...}
function findallwos {
//find all work orders...
...}
...}
我认为这对于我需要显示所有工作订单或放入新工作订单的页面来说效果很好。但是我有一些页面需要非常简单的查询,例如,其中一个报告页面将只有我们为我们工作的 3 名技术人员的下拉列表,如果我使用全局 $dbh 变量,我可以这样做
function create_dropdown () {
GLOBAL $dbh;
$sql = "select...";
$sth = $dbh->prepare($sql);
$sth->execute();
$arry = $sth->fetchAll(PDO::FETCH_ASSOC);
.....
但我宁愿远离全局变量,因为最终我想为这个站点增加未来的复杂性,这可能不适用于全局变量。(包括具有身份验证等的多个用户)。所以我的问题是:
我不应该像我设计的那样使用 Db 类,而是使用某种 connection_factory 类来传递连接吗?(并且没有我的工作订单类是任何东西的扩展)
我应该只使用对 Db 类的静态调用来提取简单的查询吗?db::fetch_array...
或者大家还有什么建议吗?我遇到了很多不同的方法来解决这个问题,但理想情况下,我想设计这个,这样当我添加多个不同的用户时,我不必完全重新编码所有内容权限等