ZendFrameworkでDB接続メモ

2010年06月22日

ZendFrameworkは自由度が高いせいかいろいろ自分で設定しなきゃいけないんのですが、とりあえずDB接続のめも。
いちいちファイルごとにホストネームとか指定するのは現実的ではないので、application.iniとBootstrap.phpでの接続方法。

application.iniにデータベースの設定情報を記述。

application/configs/application.ini

1
2
3
4
5
6
7
[production]
db.adapter = "PDO_MYSQL"
db.params.host = "localhost"
db.params.username = "root"
db.params.password = "xxxx"
db.params.dbname = "xxxx"
db.params.charset = "utf8"

ホスト名などはサーバごとに違うので注意。ローカルの場合はたいてい「localhost」でいけるはず。
dbnameはデータベース名。

application/Bootstrap.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
  protected function _initDb()
  {
    try{
      $options = new Zend_Config($this->getOptions());
      $dbConfig = $options->db;
      //データベース設定を取得
      $dbConect = Zend_Db::factory($dbConfig->adapter, $dbConfig->params); 
      Zend_Registry::set('db', $dbConect);
      Zend_Db_Table::setDefaultAdapter($dbConect);

      //データベースに接続
      $dbConect->getConnection();
    }catch(Exception $e){
      //エラー時の処理
      die($e->getMessage());
    }
  }
}

これでデータベースに接続できたので間違いないだろう。
エラー処理を本番環境と開発環境で分けたい場合はエラー処理の所を

1
2
3
4
5
if('production' == APPLICATION_ENV){
  //本番環境でのエラーメッセージ
}else{
  //開発環境でのエラーメッセージ
}

とすればいい。
1行目の振り分けはpublic/.htaccessに記述している
SetEnv APPLICATION_ENV xxxxxxxxx
のこと。(xxxxxxxxには production か development が入る)

いろいろググった結果なので、もしもっといい方法があれば教えていただけると助かります。
ZendFrameworkの本を買おうかな。。。

コメント:0件

  1. コメントはありません。
投稿者名
E-Mail

メールアドレスは公開いたしません
URL
コメント

トラックバック:0件

  1. トラックバックはありません。
ページのトップへ

artprojectteam & festiva Tweet

Loading..