Синглтон просто используют чаще всего не по назначению. Основная задача - это что бы был один экземпляр какого либо объекта. А его юзают что бы просто глобальным сделать объект.
Перенести этот проект на ООП естественно смысла нет, лучше писать с нуля.
Цитата:
Сообщение от Праведник
Кот Да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 которые просто как правило обрабатываются и проверяются в одном месте при получении, это удобней.