2011-01-16 15 views
1

auf die Dokumentation Symfony 2 accoring, müssen Sie den folgenden PHP-Code verwenden, um die Datenbank zu verbinden und eine Abfrage ausführen ...Symfony 2/Doctrine - Immer verfügbar DB-Verbindung?

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

Ich bin ein kompletter Anfänger mit Symfony 2, aber ich bin erfahren mit OOP. Ich habe mich gefragt, ob es möglich ist, eine global verfügbare $conn Variable zu haben, auf die ich von jedem Bündel zugreifen kann. Die $conn Variable würde den Wert $this->get('database_connection') enthalten, also muss ich nicht jedes Mal, wenn ich eine neue Abfrage erstellen möchte, $conn = $this->get('database_connection'); erneut eingeben.

Danke!

Antwort

3

globale Variablen sind die meiste Zeit NICHT etwas, was Sie in OOP wollen. Sie sind verwirrend, wenn es um eine Methode geht, die sich mit multiplen Variablen beschäftigt und sogar von lokalen Variablen verdeckt werden kann. Für mich, die Arbeit mit Aussagen wie

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

ist so ärgerlich wie für Sie so landete ich bei der Schaffung einer Unterklasse von Symfony \ Bundle \ FrameworkBundle \ Controllers \-Controller pro Projekt bis die Methoden zur Verfügung, die den tatsächlichen Identifikatoren erhalten rufen . In Ihrem Fall würde ich eine Methode erstellen

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

Im Allgemeinen - warum verwenden Sie nicht Doctrine für die Verwaltung der DB-Verbindung? Die meisten Abfragen können vom ORM ausgeführt werden, und dies ist die Art, mit einer echten objektorientierten Schnittstelle zur Datenbank zu arbeiten. Denk darüber nach, ich spiele seit einigen Tagen auch mit Symfony2/Doctrine und es fühlt sich wirklich gut an. Am Anfang sieht es vielleicht nach einer Konfiguration aus, aber sobald Sie die grundlegenden Konfigurationen vorgenommen haben, ist die Entwicklung sehr schnell! :)

+0

Vielen Dank! Ich werde beide Methoden ausprobieren, um zu sehen, was am besten funktioniert. – Kieran

Verwandte Themen