Показать сообщение отдельно
Старый 03.11.2011, 20:03   #8
Easy
Пользователь
 
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
Easy На верном пути
По умолчанию

Синглтон просто используют чаще всего не по назначению. Основная задача - это что бы был один экземпляр какого либо объекта. А его юзают что бы просто глобальным сделать объект.

Перенести этот проект на ООП естественно смысла нет, лучше писать с нуля.



Цитата:
Сообщение от Праведник Посмотреть сообщение
Кот ДаWINчи, в ООП/MVC с глобальными переменными будете видиться ещё чаще
Быть может не в таком контексте, а в виде регистра, но сути не меняет
ещё как меняет.

вот тут в коде что?
PHP код:
$module = ....
include ...
$module ....
include... 
вот это - плохо. в любом файле переменная может нечаянно быть перетёрта из за того что имя слишком распространённое, особенно $n, $i, $s, $row, $res... и прочие.

когда вы юзаете
Core::model()->db->row
или просто $row
где больше шансов что переменная может быть перетёрта особенно если проект делает не один человек?
Но есть и страшнее последствия процедурного программирования.
Предположим что файл инклудится и в родительском файле объявляется переменная (как раз случай с этого сайта).
процедурный стиль
PHP код:
if ($file)
    include 
$file
не при всех настройках сервера этот код будет зщищён.

а в ООП будет что то типа
PHP код:
class A
{
    
$file;

    function 
exec()
    {
         include 
$file;
    }

и что будет если открыть файл напрямую? да не чего
как правило, только в index.php будет вызов что то типа
i
PHP код:
nclude "core/core.php";
App::run(); 
любой другой файл обычно содержит только классы и вызовы из классов. Так что не как не запустить в обход index.php

Я не утверждаю что ООП - значит без дыр
Это далеко не так, остаются в любом случае передаваемые параметры GET и POST которые просто как правило обрабатываются и проверяются в одном месте при получении, это удобней.
Easy вне форума   Ответить с цитированием