2013-07-31 3 views
1

Я собираюсь создать глобальную переменную $PDO, чтобы использовать вместе с моим скриптом внутри классов, функций и моего кода. Так может ли это произойти нарушение безопасности?
Я использую отдельное соединение каждый раз. должен ли я придерживаться этого или использовать глобальный объект PDO?Глобальная переменная подключения или новая каждый раз

ответ

2

Это действительно зависит от вашего приложения, так как могут быть случаи, когда вы хотите управлять несколькими подключениями. Однако во многих случаях имеет смысл открыть только одно соединение для использования в процессе обработки одного запроса. Это помогает устранить накладные расходы на открытие/закрытие соединений по всему коду. Я бы предположил, что в большинстве случаев безопасность не будет большой проблемой, если вы не планируете передавать соединение БД с набором кода, который не должен иметь разрешений БД, связанных с этим конкретным соединением (возможно, библиотеки или службы, которые вы не контролируйте).

Я также предлагаю вам взглянуть на концепцию инъекции зависимостей, так как в большинстве случаев было бы предпочтительнее передавать экземпляр объекта БД на фрагменты кода, который ему нужен, а не рассматривать его как глобальный и просто используйте ключевое слово global для доступа к нему. Это поможет избежать необходимости копировать код в каждом классе/функции, чтобы проверить, имеет ли БД соединение и т. Д. Если у вас есть один класс, который делает это, и вы можете передать этот объект вокруг классам, которые в нем нуждаются, им может быть гарантировано, что объект будет делать то, что он должен делать.

Смежные вопросы