А теперь представим, что на хостинге «нечаянно» включены register_globals и «нечаянно» в строку запроса попадает ?db=12разницы, естественно, НИКАКОЙ.
Сколько времени ты будешь искать эту ошибку?
-~{}~ 18.02.09 14:01:
Angerslave, одновнеменно, да )
А теперь представим, что на хостинге «нечаянно» включены register_globals и «нечаянно» в строку запроса попадает ?db=12разницы, естественно, НИКАКОЙ.
triumvirat но паттерны проектирования не ограничены рамками ООП, и global ООП не противоречит. А чем в данном конкретном случае плох global? Кроме того, есть мнение, что Singleton тоже плохая практикаразница в том, что сингелтон - это паттерн проектирования.
а global - частная особенность языка
человек учится программировать с помощью объектов. так давайте и будем вариться в рамках ООП. Использование global, 20 раз уже говорили, это плохая практика.
То что плохая практика - не спорю, но речь о конкретной ситуации. $db = null; случайно очень сложно написать. Найти такую ошибку не сложно, сложно находить ошибки, которые редко проявляются. Если речь о внутреннем состоянии, то синглтон тут не поможет - у него тоже один объект на всех с одним внутренним состоянием, которое можно менятьОтстой global в том, что если в одном "прекрасном" методе будет строчка global $db; $db = null;, то ты замучаешься дебажить. Пример, естественно, утрирован, но если где-то будет изменяться внутреннее состояние объекта напрямую, то геморра при поиске ошибки будет ещё больше
$db = new Database(); // и зачем мы это здесь вызываем, если метод GET?
class foo
{
function run()
{
global $db;
if (POST)
{
$db->query();
}
}
}
глобальные переменные - это везде плохая практика, костыль, заплатка - что угодноglobals в ООП - плохая практика