2013年10月21日月曜日

在庫管理システム『SASO1.0』PDOを使う。

SASO1.0ではデータベース抽象レイヤーにPDOを使っています。
シングルトンパターンを使って、作ってみました。
クローンを禁止しています。

なお、オートローダがディレクトリ構造を把握したいので、名前空間を使っています。
デフォルトフェッチモードをクラスとして作ります。

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 件のコメント:

コメントを投稿