symfonyでPDO接続をする

ORMは便利だろうけど、パフォーマンスが気になるとかSQLが全部目に見える状態で作りたいとかいう話もあったりして、直接PDO経由でDB操作をしたい場合にどうすれば良いのか試してみました。

 

DSN情報を設定ファイルに記述。 

apps/appname/config/app.yml

all:
  db:
    dsn:  mysql:host=localhost;dbname=test
    user: root
    pass: pass

 

DB接続クラスを作成。 

lib/dbConnection.class.php

<?php
class dbConnection
{
  static private $PDOInstance;

  protected function __construct()
  {
    $dsn = sfConfig::get('app_db_dsn');
    $user = sfConfig::get('app_db_user');
    $pass = sfConfig::get('app_db_pass');

    self::$PDOInstance = new PDO($dsn, $user, $pass);
  }

 

  public static function getConnection()
  {
    if(!self::$PDOInstance)
    {
      new self();
    }

 

    return self::$PDOInstance;
  }

}

actionなどからコネクション取得。 

$conn = dbConnection::getConnection();

で、あとはこのコネクション使っていろいろと、ていう感じで動かしてみていたのですが、おいおい調べていたら自作せずともデフォルトのDB設定でPDO接続を指定できてしまうことを知りました・・・。 

 

config/databases.yml

all:
  pdocon:
    class:       sfPDODatabase
    param:
      dsn:       mysql:host=localhost;dbname=test
      dbtype:    mysql
      database:  test
      username:  root
      password: pass

actionからコネクション取得。 

$conn = $this->getContext()->getDatabaseConnection('pdocon');

action以外から取得。 

$conn = sfContext::getInstance()->getDatabaseConnection('pdocon');

 

なるほど、こっちの方が簡単。

動的にDB接続先を切り替えたりといったこともやってみたかったりするので、それぞれの使い勝手も含めて引き続き調べてみたいと思います。

まだ動かして間もないですが、少しずつsymfonyに慣れてきた気がします。

関連記事

トラックバック(0)

このブログ記事を参照しているブログ一覧: symfonyでPDO接続をする

このブログ記事に対するトラックバックURL: http://blog.knockoutmarch.com/mt3/mt-tb.cgi/198

コメントする

このブログ記事について

このページは、ko31が2009年2月18日 04:25に書いたブログ記事です。

ひとつ前のブログ記事は「R-1ぐらんぷり感想」です。

次のブログ記事は「「細野真宏の数学嫌いでも「数学的思考力」が飛躍的に身に付く本!」」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

RSSフィード

  • 購読する

いろいろ

あわせて読みたい

フィードメーター - ポップフライ

seo

Powered by Movable Type 4.01