2011-01-16 10 views
1

私はsymfonyの2との完全な初心者が、私はで経験しています...あなたは、データベースに接続し、クエリを実行するには、次のPHPコードを使用する必要があり、symfonyの2ドキュメンテーションにSymfony 2/Doctrine - 常に利用可能なDB接続?

$conn = $this->get('database_connection'); 
$users = $conn->fetchAll('SELECT * FROM users'); 

をAccoring OOP。どのバンドルからでもアクセスできるグローバルに$connという変数を持つことが可能かどうか疑問に思っていました。 $conn変数には$this->get('database_connection')の値が含まれるため、新しいクエリを作成するたびに$conn = $this->get('database_connection');を再入力する必要はありません。

ありがとうございます!

答えて

3

グローバル変数はほとんどの場合OOPで必要なものではありません。複数の変数を扱うメソッドについては混乱しており、ローカル変数によって隠されている可能性もあります。私にとっては、

$anything = $this->get('what.the.hell.why.arent.those.identifiers.shorter'); 

のような文での作業は、あなたはので、私は実際の識別子を取得する呼び出すメソッドを提供し、プロジェクトごとのSymfony \バンドル\ FrameworkBundle \コントローラ\コントローラの1つのサブクラスを作成してしまったためと同じくらい迷惑です。あなたの場合、私は方法を作成するでしょう

public function getDatabaseConnection() 
{ 
    return $this->get('database_connection'); 
} 

一般的に - なぜDB接続を管理するためにDoctrineを使用しないのですか?ほとんどのクエリはORMで行うことができます。これは、データベースへの実際のオブジェクト指向のインタフェースで動作する方法です。それについて考えると、私はまた、Symfony2/Doctrineをいくつかの日からプレイしています。本当に良い感じです。最初は設定のように見えるかもしれませんが、基本的な設定を済ませたら、開発は本当に速いです! :)

+0

ありがとう!私は確かに両方の方法を試して、どれが最もうまくいくか見ていきます。 – Kieran

関連する問題