Ну давай разбираться.
Согласимся, что речь идет о приложениях или системах, которые развиваются - к ним меняются требования, вносятся изменения, дописываются или удаляются фичи, фиксятся баги и т.д. Кто-то открывает исходный код и пытается его понять, а иногда и поменять.
Во-вторых, понятно, что мы говорим о достаточно сложных системах, в которых есть отдельное хранилище (БД), выделен пользовательский интерфейс (иначе нам не надо было бы кодировать данные в HTML/JSON), возможно есть внешние или внутренние сервисы (иначе не надо было бы париться об url_encoding).
Когда оба эти условия выполнены, всплывает такая размытая штука как архитектура и "хороший код". Про это написаны тонны книжек, иногда противоречивых, но есть вещи, с которыми согласны очень многие. Например понятия "зоны ответственности", separation of concerns, business rules. Если следовать этим понятиям, и у БД, и у "ядра" приложения, и у шаблонизатора, и у внешних сервисов есть то, что назвается "контракт" - свой набор функций (роль как у части единой системы) и интерфейс (API, "язык", на котором часть системы общается с другими частями). БД должна принять запрос в формате SQL и сохранить/выдать данные в точности как сказано в запросе. HTML шаблон должен принять текст и сделать так, чтобы в браузере он выглядел в точночти также, как был получен шаблоном. Сервис принимает команды по HTTP. И так далее. Разработчик, когда открывает исходный код, надеется, что код следует этим общепринятым правилам, что каждая часть системы делает ровно то, что должна, не больше и не меньше, и в любых обстоятельствах. Бизнес-требования меняются. За реализацию бизне-требований отвечает "ядро" приложения. То, что сегодня "заведомо вредная инфа" завтра станет багрепортом от пользователя "ой, я запостил важное сообщение, а ваша система его испортила" или судебным иском от клиента. Поэтому разработчик полезет менять логику бизнес-требований в ядро, а не в шаблонизатор или БД. Вообще, чем меньше частей системы затрагиваются для выполнения одного изменения, тем лучше, т.к. меньше шансов внести ошибку (гуглить Single Responsibility Principle).
Когда ты проектируешь транспортный (или сервисный, если угодно) уровень системы так, что он может работать только с "правильными" данными, ты расставляешь ловушки в коде. Слои системы начинают зависить друг от друга неочевидным образом. Поддерживать и развивать такую систему становится очень сложно, долго и дорого. В итоге это скажется на клиентах и на бизнесе. Так что "конечный результат одинаковый" это заблуждение.
Но ты не ответил на вопрос, а последним наплодил еще несколько.
1. Где можно прочесть про транспортный/сервисный уровень приложения? Гугл знает только о модели OSI, которя никак напрямую к твоему приложению не относится, пробежался по архитектурам DDD (а прочитав про слои еще раз пересмотрел луковую) и тоже ничего не нашел.
2. Про "правильные" или "неправильные" данные у меня должна знать сама сущность, если данные неправильные то конструктор кинет экзепшн, это вообще логика самого бизнеса "правильность" данных. Ну зависимость уровней уже зависит от зависимостей этих сущностей. О системе с сильными зависимостями и сущностями, которые не контролируются тоже полностью согласен. Но
3. Я говорил не о правильности данных, а об их безопасности и о конкретном примере с xss атакой и о конечном резульате который увидит пользователь. Ты говоришь о том, что надо всё хранить, но именно выводить безопасно. То есть например у сущностей (у каждой) у тебя будет функция render, которая для определенных свойств будет знать что надо сейчас избавиться от возможных скриптов. Такой подход есть, но не могу понять чем он лучше того, что ты фильтруешь эти же данные на входе? Например в более старых фреймах например (простигосподи) Кохана, есть функция для получения данных из поста которая также чистит данные от xss, ты юзешь для получения данных во всём проекте только её и у тебя нет проблем. В симфони например, рекомендуют юзать оба подхода (соответсвенно на формы на входе и на твиг на выходе).
Если не сложно, можно пример более конкретный?) хочу разобраться в этом вопросе