私が取り組んでいるプロジェクトのデータベース接続を作成\処理する方法について、アドバイス\提案が必要です。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...
...}
...}
これは、すべての作業指示書を表示する必要があるページや、新しい作業指示書を入れる必要があるページではうまくいくと思います。しかし、非常に単純なクエリを必要とするページがいくつかあります。たとえば、レポート ページの 1 つには、私たちが働いている 3 人の技術者のドロップ ダウン リストが表示されるだけです。グローバルな $dbh 変数を使用していれば、
function create_dropdown () {
GLOBAL $dbh;
$sql = "select...";
$sth = $dbh->prepare($sql);
$sth->execute();
$arry = $sth->fetchAll(PDO::FETCH_ASSOC);
.....
しかし、最終的にはグローバル変数では機能しない可能性があるこのサイトに将来の複雑さを追加したいので、グローバル変数には近づきません。(認証などを伴う複数のユーザーを含む)。だから私の質問は:
私が設計した Db クラスを使用するのではなく、接続を渡す代わりにある種の connection_factory クラスを使用する必要がありますか? (そして、私のworkorderクラスを何かの拡張にしないでください)
単純なクエリを取得するには、Db クラスへの静的呼び出しを使用する必要がありますか?db::fetch_array...
または、他に何か提案はありますか?これについてはさまざまな方法に出くわしましたが、理想的には、異なるユーザーを複数のユーザーを追加する時点ですべてを完全に再コーディングする必要がないように、これを設計したいと考えています。パーミッションなど