我需要一些关于如何为我正在处理的项目创建\处理数据库连接的建议\建议。我正在为使用PHP 5.4.3的公司创建一个简单的工作订单系统,现在没有任何类型的身份验证,因为我没有准备好复杂性。到目前为止,我计划在以下结构PHP类中的数据库连接
<? 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...
...}
...}
我认为这将工作正常的页面,我需要显示所有的工作订单或放入新的工作订单。但是我有几个页面需要非常简单的查询,例如,如果我使用的是全局$ dbh变量,那么其中一个报告页面将只包含我们为我们工作的3名技术人员的下拉列表
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...
或者你们有其他建议吗?我遇到了很多不同的方法来解决这个问题,但理想情况下,我想设计这个,这样我就不需要完全重新编码所有东西,当我添加不同的用户时权限等
你有没有考虑过使用现有的,经过测试和验证的解决方案?有时像教条? –
如果你想要一些可扩展的(准备稍后),停止使用静态。你只能失败。 [你需要一个服务?](http://i.stack.imgur.com/azYOV.png) – hakre
@PeterBailey我没有使用库或框架的问题,但因为我还是PHP新手,我宁愿做这个第一个网站的难题就是这样,所以我知道将来如何正确使用图书馆。 – dangel