FanatPHP: я не ругаюсь на объект. Я говорю что действия, которые планируется выполнять не вписываются ни в один из стандартных HTTP-методов.
Читай фразу как "по смыслу [используемый] ресурс..."
Сейчас автолодер сначала ищет в app, потом в lib, так что переопределение существующих классов происходит прозрачно без вмешательства в «нижний» слой. Плюс через Dependency Injection можно использовать нужный объект отнаследованный от базовых.
В шаблонах всё немного проще: есть папка от FW «default» где лежат заготовки использующиеся по умолчанию и как пример что как работает. При желании создается файл там, где это нужно и и указывается в настройках того, кто его использует. Вся шаблонизация гибкая, везде где используется шаблон можно его переназначить. Т.е. CMS не трогает файлы FW, а кладет свои рядом.
По сути проблема в том, что FW это не просто библиотека, которую можно прицепить сбоку, а каркас, в этом его ценность.
Можно конечно не заморачиваться и вести разработку только CMS, но хочется иметь возможность использовать FW там, где не нужна вся остальная логика и обвязка.
Другой момент, что редакции CMS могут быть разными, соотв. FW является тем общим, что нужно выделять в любом случае.
Да, в UPD я именно это имел ввиду, просто с ветками не сталкивался, поэтому хотелось бы знать, какие могут быть подставы.
Да, согласен, конструктор\деструктор важное отличие. Когда они используются, костыли придумывать явно смысла нет.
С другой стороны я их почти не использую, т.к. максимально стараюсь задействовать lazy-инициализацию всего что можно, и до выполнения непосредственно действия часто ничего не происходит.
А логика инициализации всё равно вынесена отдельно и проверяет своё состояние перед каждым вызовом.
Если вам нужен объект — одиночка.
Не очень осознаю смысловое понятие «объект» в данном ракурсе. Скажем регистр — это объект?
Или подключение к БД, которое почти всегда нужно в единственном количестве? Формально да, объект: состояние, данные и методы.
При этом таскаться они будут повсеместно и DB::Query('...') по мне симпатишнее чем DB::Instance()->query('...');
Читай фразу как "по смыслу [используемый] ресурс..."