Вот первый признак того, что человек не понимает сути ООП. Когда он оперирует словами "процедурный стиль". Нет такого стиля.
Лично я разграничиваю физически. Двумя словами - есть библиотека
функций, которые расширяют возможности PHP. Она да, подключена везде. Прямо в индексе. Соответственно ведут эти функции себя так же, как и любые штатные. Везде видны и везде работают. Ну для примера маленькая обертка:
function htmlChars($data)
{
if(is_array($data))
$data = array_map("htmlChars", $data);
else
$data = htmlspecialchars($data);
return $data;
}
Позволяет обрабатывать массивы любой вложенности.
Вот для чего мне чего-то разграничивать? Всем оно надо. И если кто-то случайно напишет созвучную, интерпретатор выдаст ошибку.
Всё остальное разграничивается физически. Некоторый функционал инкапсулируется в классы. Иногда полезно даже их отнаследовать (само определение не верно по сути, даже по переводу). Расширить. Иногда интересно использовать паттерны, допустим ту же фабрику. Но это не ООП. Это библиотеки. Это инструкции, которые будет выполнять программа, если необходимо.
К примеру у меня есть класс постранички. Он лежит в библиотеках, есть пить не просит. Когда нужно, он подхватится автолоадом (тоже вопрос спорный об оптимальности) и отработает свою задачу. Не нужна постраничка - пусть лежит. Есть класс почты - соответственно. И так далее - пара десятков нужных классов в загашнике. Не в приложении, а дома, в репозитории. Понадобится - положу в либы.
Есть компоненты. Отдельные самостоятельные программки, которые пользуются библиотеками и общими данными. Они вообще никому не мешают.
Второй вопрос. Допустим есть хитрый шаблонизатор. И есть вьюшки, реализующие логику представления. Не шаблоны, они отдельно. А именно логика во вьюшках. Так вот вьюшки отнаследованы от шаблонизатора. Это легко и просто, но это не ООП и даже не наследование. Просто вьюшка расширяет возможности шаблонизатора применительно к конкретному шаблону.
А есть общая вьюшка, которая собрана по образу фабрики. Нужна для того, чтобы передать в родительские (и не только) шаблоны "глобальные" данные. Это вроде паттерн, но не ООП. Потому что суть прямо противоположная. Я сначала определяю
что нужно делать, потом уже
кто это будет делать.
Ну а остальное - обычная генерация страниц.
В контроллере достаточно написать к примеру так:
$view = View::create('user');
$view->assign(htmlChars($data))->run();
Мне насрать, как называются переменные в контроллерах (они кстати у меня процедурные) ибо два контроллера не могут работать одновременно. И хоть полмиллиона страниц, какая разница. И пусть полмиллиона человек работает - каждый со своим контроллером. Они никогда не пересекутся. Это же касается и моделей.
И что мы имеем.
1. Общий функционал - библиотеки. Где тут можно пересечься? В том же PHP чёт никто не пересекается)))
2. Контроллеры, модели и вьюшки у всех свои. Да, кода по объему больше. Но он работает частями. 5-6 файлов одновременно (не считая библиотек, которые не пересекаются), и это оптимальнее, ремонтопригоднее и прозрачнее. Не нужно разгребать доки с архитектурой. Она проста: контроллер -> вид <-> модель. Всё. Остальное - окружение. Ибо императив.
3. Общие данные (конфиги, ленгвичи и прочая), что тоже пересечься не может по определению.
Чего тут можно бояться?
Вот когда всё приложение - единое целое (a в ООП обычно так), тогда нужно бояться и прятаться за фиговыми листочками немспейсов. Я тут недавно посмотрел, сколько файлов подключает хваленый TWIG для обработки одной страницы и охренел. 89!!! Конечно тут зассышь пересечений. А нужно то всего распарсить "Привет, Мир!"
Так что ООП, это конечно красиво и круто, но это индуаизм чистой воды. По моей схеме можно написать сколь угодно большой сайт и сколь угодно много может работать с ним народу. И даже не подозревать об областях видимости.
Это не прикладные программы. Там так не выйдет))) Но мы вроде тут о PHP говорим?
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.