Symfony 2 / Doctrine - Всегда ли доступно соединение с БД? - PullRequest
1 голос
/ 16 января 2011

Согласно документации Symfony 2, вы должны использовать следующий PHP-код для подключения к базе данных и выполнения запроса ...

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

Я новичок в Symfony 2, но у меня есть опыт работы с ООП. Мне было интересно, возможно ли иметь глобально доступную переменную $conn, к которой я могу получить доступ из любого пакета. Переменная $conn будет содержать значение $this->get('database_connection'), поэтому мне не нужно повторно вводить $conn = $this->get('database_connection'); каждый раз, когда я хочу сделать новый запрос.

Спасибо!

1 Ответ

3 голосов
/ 16 января 2011

глобальные переменные в большинстве случаев НЕ являются тем, что вам нужно в ООП. Они сбивают с толку, когда речь идет о методе, который работает с несколькими переменными, и они могут даже быть скрыты локальными переменными. Для меня работа с такими утверждениями, как

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

так же раздражает, как и для вас, поэтому я создал один подкласс Symfony \ Bundle \ FrameworkBundle \ Controller \ Controller для каждого проекта, который предоставляет методы, которые вызывают get с фактическими идентификаторами. В вашем случае я бы создал метод

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

В общем - почему вы не используете Doctrine для управления подключением к БД? Большинство запросов может быть выполнено ORM, и это способ работать с реальным объектно-ориентированным интерфейсом к базе данных. Подумайте об этом, я также играю с Symfony2 / Doctrine уже несколько дней, и это действительно хорошо. В начале это может выглядеть как адская конфигурация, но как только вы выполнили основные настройки, разработка действительно быстрая! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...