私は現在、自分のページを少し速く構築するために、いくつかの素晴らしいクラスを構築しようとしています。
私は現在、このセットアップを持っています、
// 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
以下のように、オブジェクト全体をクラスcontent
内の関数に渡すほうがよいでしょうか。Page
content(new DBC(), $data);
そうすれば、オブジェクト コンテキストで関数を使用できるようになります。関数の外でも varを使用する必要があるためPage
、クラスはクラスによって拡張する必要があります。しかし、これにより、クラスの2つのインスタンスが、拡張されたときに1つになり、関数に渡されたときに1つになりますか?DBC
dbc
content
DBC
Page
content
この質問を読んでくれてありがとう、そして答えてくれてありがとう!