シングルトンパターンを使って、作ってみました。
クローンを禁止しています。
なお、オートローダがディレクトリ構造を把握したいので、名前空間を使っています。
デフォルトフェッチモードをクラスとして作ります。
catch内はコントローラクラスのスーパークラスにエラー処理をまとめているので、こうしました。
このファイルはclassesのbaseディレクトリに入れます。
<?php namespace saso\classes\base; class PdoManager{ private static $_pdo; private function __construct() { try{ self::$_pdo = new \PDO( DSN, USER, PASSWORD, array( \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_CLASS, ) ); self::$_pdo->exec('SET NAMES utf8'); }catch (\PDOException $e){ $ctrlbase = new \saso\classes\controllers\ControllerBase(); $ctrlbase->error('database'); die(); } } public static function getPdo() { new PdoManager(); return self::$_pdo; } public final function __clone() { throw new \Exception('invalidClone'); } }以下のように使います:
$pdo = saso\classes\base\PdoManager::getPdo(); $pdo->query('内容');
0 件のコメント:
コメントを投稿