@phpcoder81

Можно ли один раз использовать глобальную переменную?

Всем доброго дня. С недавнего времени перевел сайты на PDO. И всёб ничего, но внутри некоторых функций прежний объект PDO не виден. Вопрос: сильно ли я накосячу, добавив перед $pdo переменную global? На всём проекте это будет одна всего лишь глобальная переменная. Программируем втроем. Договориться сможем, чтоб не переназначили случайно. Как вариант можно и синглтон использовать, но по моему это те же яица. Вместо куска кода, одно слово.

Это был первый вопрос. И заодно на второй ответьте, если знаете.
В данную конструкцию не пролезет никак инъекция?

$res = DB::prepare("UPDATE `users` SET `email` = :email WHERE `id` = :id");

$data = array(
  'email' => $_POST['email'],
  'id' => $_POST['id']
);

$res->execute($data);
  • Вопрос задан
  • 290 просмотров
Решения вопроса 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
Странно, в тексте упоминается объект $pdo, а в коде статический вызов, у которого никаких проблем с видимостью в принципе быть не может.

Но есть отвечать буквально, то

1. Если код процедурный, то global для $pdo или статический вызов через DB:: - это нормально. Если код объектный, то передавать $pdo как параметр в конструктор, присваивать локальной переменной класса и потом уже использовать только ее.
2. В данную конструкцию никакая инъекция не пролезет

Писать, кстати, можно короче, чтобы не канителиться.

$data = array(
  'email' => $_POST['email'],
  'id' => $_POST['id']
);
$res = DB::prepare("UPDATE `users` SET `email` = :email WHERE `id` = :id")->execute($data);
Ответ написан
AxianLTD
@AxianLTD
  1. Глобальными переменными не гнушаются и гранды. Я бы только подумал чтобы вынести все в отдельный файл.
  2. А то как же ;-) Кто фильтровать ввод будет?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Zubastik_1
Я бы искал причину если проект планируете развивать и улучшать программу а не просто поддерживать на плаву. Где то по видимому косяк.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы