我目前正試圖建立自己的一個很好的幾個類來建立我的網頁更快一點。爲我的整個網站創建一個數據庫圖層類,需要一些PHP建議嗎?
我現在有這個設置,
// 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
函數內部和DBC
類內部的query
函數使用對象上下文的連接。
我解釋我的問題後的問題如下;
是否最好在我的DBC
類static
中爲我執行查詢的功能,並只傳入現有連接?
OR
它會更好整個DBC
對象傳遞給我的content
功能Page
類中像下面,
content(new DBC(), $data);
這樣讓我用函數對象上下文。 Page
類仍然需要擴展DBC
類,因爲我需要使用content
函數以外的dbc
變量。但是,如果DBC
類擴展Page
,那麼會不會產生DBC
類的兩個實例,而當傳入content
函數時,會有一個實例被擴展?
感謝您花時間閱讀此問題並提供任何答案!
「之後要求我的課程進入腳本。」 - > [自動加載??](http://php.net/manual/en/function.spl-autoload.php) – PeeHaa
不,我只是做'require('classes.php');'因爲它們被保存在一個不同的文件。 – Griff
設置一個自動加載器功能有效地需要這些文件,當你需要他們 - 或者試圖,至少。這樣,你不需要你不需要的文件。當你嘗試實例化一個未定義的類時,自動加載器將查找它需要加載的文件,如果魔術功能正常工作,那就是:)另外:'require_once('classes.php');'是你想要:如果班級被定義,不需要第二次需要該文件 –