考慮下面的PHP代碼:簡單的方法來傳遞數據庫對象成擴展類無數次
<?php
require_once("myDBclass.php");
class a {
private $tablename;
private $column;
function __construct($tableName, $column) {
$this->tableName = $tablename;
$this->column = $column;
}
function insert() {
global $db;
$db->query("INSERT INTO ".$this->tableName." (".$this->column.") VALUES (1)");
}
}
class x extends a {
function __construct() {
parent::construct("x", "colX");
}
}
class y extends a {
function __construct() {
parent::construct("y", "colY");
}
}
?>
我有一個是在另一個文件中實例化我的$ db對象,但希望以某種方式傳遞到這個類的每次我在類「a」中定義一個新函數時都不使用全局關鍵字。
我知道我可以通過在實例化類X和Y時傳遞DB對象,然後將它傳遞給類A(類似於當前正在處理的表名和列),但我永遠不知道有多少次我可能會擴展A類,並認爲必須有另一種更簡單的方法。
有人知道我可以考慮實現這個更好的解決方案嗎?
在此先感謝
我不確定如何提起singleton模式可以幫助他 – Galen 2010-09-02 23:37:36
如果數據庫類爲我們設置了一個單例類,那麼他可以輕鬆調用'$ db = db :: singleton();'和viola,他現在擁有db類可用於類,更好的是它肯定是一個單一的對象,而不是多個/重複。更好的是,只要使用該語句包含dbclass,他就可以在腳本內部的任何位置使用該對象。 – 2010-09-02 23:42:26
這與使用全局$ db基本相同; – Galen 2010-09-03 16:02:43