言語:PHP
フレームワーク:zendFramework3
前提・実現したいこと
zendFramework3で一般的なMVCアプリケーションの開発をしています。
形としてはzendが推奨するスケルトンプロジェクトと同様のつくりと考えていただいて構わないと思います。
トランザクション処理を行うため、
dbアダプタやコネクションをグローバルで持ちたいでのすが
このやり方がスマートなのかどうかわかりません。
できればfuelPHPのDBクラスのような動きにしたいのですが
もっとこうした方がいいなどのアドバイスやヒントがあれば教えて頂きたいです。
現在割と早い段階で呼ばれているModule.php内で
GlobalAdapterFeatureというクラスにスタティック変数としてデータベース接続アダプターを設定しています。
しかしトランザクション開始の部分が少し冗長だなと感じています。
できればfuelのように
DB::start_transaction();
の一文ですませたいのですが、そのような動きにするには別でDBクラスなどを作らなくてはならないのでしょうか?
もっとこうした方がいいよ、などがありましたらヒントをお願いしたいです。
該当のソースコード
PHP
1class Module { 2 3 public function onBootstrap($e) 4 { 5 $eventManager = $e->getApplication()->getEventManager(); 6 $moduleRouteListener = new ModuleRouteListener(); 7 $moduleRouteListener->attach($eventManager); 8 $this->createDbAdapter($e); 9 } 10 11 protected function createDbAdapter($e) 12 { 13 $config = $e->getApplication()->getConfig(); 14 //global.phpのdb設定でアダプタ作成 15 $adapter = new \Zend\Db\Adapter\Adapter($config['db']); 16 GlobalAdapterFeature::setStaticAdapter($adapter); 17 } 18 public function getConfig() { 19 20 return include __DIR__ . '/../../../config/module.config.php'; 21 } 22 23}
PHP
1 2 use \Zend\Db\TableGateway\Feature\GlobalAdapterFeature as DB; 3 4 try { 5 6 7 $connection = DB::getStaticAdapter()->getDriver()->getConnection(); 8 $connection->beginTransaction(); 9 // トランザクション開始 10

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。