1. ок. Поэтому вопросу делаю для себя вывод: без шаблонизатора не обойтись, когда надо предоставить возможность создания/изменения шаблонов человеку со стороны (не разработчику) и особенно пользователю. В других случаях выбор использовать или не использовать шаблонизатор (а не сам PHP) это вопрос технических требований и личного вкуса разработчика.
2. Если я правильно понял, что такое layout (<html><head></head><body><header><div class="content"></div><footer></footer></body></html>), то я никак не ссылаюсь на него из шаблонов других блоков. Я придерживаюсь концепции независимых блоков.
1. Как это шаблон и вид могут знать о данных одинаково?
«Вид» это код, который пишите вы, шаблон — разметка, которую пишет верстальщик или пользователь. Вы сами говорили об этом выше. Я думаю, в таком случае, разработчик знает о данных не очень много.
1. Ваш изначальный посыл был в том, что все надо экранировать и запись {{var}} лучше, чем php-fаналог. Разве нет?
2. Я не делю основной layout и блоки, layout это просто блок «page», который включает в себя другие блоки (или не включает, если это не надо).
1. Спорно. Во-первых htmlspecialchars($var, ENT_QUOTES, 'UTF-8'); можно сделать и так:
foreach ($data as $k=>$v) $data[$k] = htmlspecialchars($v, ENT_QUOTES, 'UTF-8');
Одна строчка. И даже если она будет не в модели (хотя Ogra, похоже, с вами не согласен по этому поводу) по она может быть в методе, который рендерит шаблон.
Да и в модели она может быть. Модель не знает, как будут использованы данные. Но вы-то знаете :) Вызывайте метод типа getDataForHTML() или getDataForJSON().
2. Для меня удивительно нечитабельны оба ваших примера :).
У меня например, в шаблоне страницы может быть конструкция <?=show("some_block_template", $page);?>, которая значит, что надо в этом месте надо вставить шаблон некоего блока страницы. У каждого раздела сайта этот блок («заголовок, меню, строка поиска, whatever) может иметь разный шаблон. Если у данного раздела такой шаблон не определен используется базовый, если базового нет, то используется вшитый шаблон по-умолчанию (где просто написано, что шаблон такого-то блока для страницы не определен).
Я не уверен, что это то самое наследование шаблонов про которое вы говорите. Если что вы меня поправите.
3. Тут согласен. В описанной вами ситуации разумнее использовать сторонний шаблонизатор, а не php.
Тут вроде понятно… весь мой пример скрипта — контроллер.
Модель и представление, типа, определены в других файлах.
Насчет uri не совсем понятно. С учетом того, что Uri — universal resourse identifier, чем он хуже любого другого идентификатора?
Впрочем, я тоже не всегда использую uri, а извлекаю из него параметры. Но иногда (в удачный день :) получается использовать uri без дополнительной обработки.
2. Если я правильно понял, что такое layout (
<html><head></head><body><header><div class="content"></div><footer></footer></body></html>), то я никак не ссылаюсь на него из шаблонов других блоков. Я придерживаюсь концепции независимых блоков.«Вид» это код, который пишите вы, шаблон — разметка, которую пишет верстальщик или пользователь. Вы сами говорили об этом выше. Я думаю, в таком случае, разработчик знает о данных не очень много.
{{var}}лучше, чем php-fаналог. Разве нет?2. Я не делю основной layout и блоки, layout это просто блок «page», который включает в себя другие блоки (или не включает, если это не надо).
Да и вообще сам uri может выступать идентификатором ресурсе в БД, XMLфайле или key-value хранилище.
Конечно, не всегда это может быт правильно или удобно.
htmlspecialchars($var, ENT_QUOTES, 'UTF-8');можно сделать и так:Одна строчка. И даже если она будет не в модели (хотя Ogra, похоже, с вами не согласен по этому поводу) по она может быть в методе, который рендерит шаблон.
Да и в модели она может быть. Модель не знает, как будут использованы данные. Но вы-то знаете :) Вызывайте метод типа getDataForHTML() или getDataForJSON().
2. Для меня удивительно нечитабельны оба ваших примера :).
У меня например, в шаблоне страницы может быть конструкция
<?=show("some_block_template", $page);?>, которая значит, что надо в этом месте надо вставить шаблон некоего блока страницы. У каждого раздела сайта этот блок («заголовок, меню, строка поиска, whatever) может иметь разный шаблон. Если у данного раздела такой шаблон не определен используется базовый, если базового нет, то используется вшитый шаблон по-умолчанию (где просто написано, что шаблон такого-то блока для страницы не определен).Я не уверен, что это то самое наследование шаблонов про которое вы говорите. Если что вы меня поправите.
3. Тут согласен. В описанной вами ситуации разумнее использовать сторонний шаблонизатор, а не php.
Модель и представление, типа, определены в других файлах.
Насчет uri не совсем понятно. С учетом того, что Uri — universal resourse identifier, чем он хуже любого другого идентификатора?
Впрочем, я тоже не всегда использую uri, а извлекаю из него параметры. Но иногда (в удачный день :) получается использовать uri без дополнительной обработки.
1. Что за автоэкранирование и зачем? Если данные не готовы для вывода, разве «модель» не должна их подготовить? Или «модель представления»?
2. Видимо я не сталкивался еще с такой проблемой… С другой стороны реализация разве не зависит от вас?
3. А зачем специально изолировать шаблон? Это же ваша программа, просто не используйте там eval($_GET['expr']);.
Правильно ли я понял, что надо сначала изобрести себе кучу проблем, и тогда сторонний шаблонизатор обязательно поможет их решить?
Например, в HTML — будете бороться за отмену тега A или что-то боле полезное?
Я пользуюсь portable софтом в основном и редко когда что-то устанавливаю.
Хотя видел, что проги пытаются протащить за собой какую-то ерунду, но это что-то западной, Хром, Бинг,…
Что у вас за приложение? Что оно делает?
Работает ли оно у вас еще в в каких-то соцсетях, и если да, то как обстоит ело с использованием нескольких разных API?
Но не обязательно для того, чтобы решать прикладные задачи.
Которая проходит, а проекты остаются.
Ведь где-то могут существовать переменные с такими же именами, как и ключи массива.
Пусть в примере их нет. Но в жизни бывает всякое. :)
Для каких задач нужно что-то еще?
Зачем зависимость от крона, разве нельзя определять статус на момент загрузки страницы?
Вроде можно.
Да же так, без этой информации новость почти не имеет смысла.
И хоть Яндекс традиционно не раскрывает свои планы, в этом случае от подобных традиций стоит отойти. Потому что это может затронуть всех нас.
И как нам быть — поддерживать Яндекс или нет? Может вы там собрались хулиганить и творить хаос. :)
На одном браузере я сознательно установил Бар, чтобы смотреть погоду, остаток на Я.Деньгах, курсы валют. На других я сознательно бар не ставил.
В какой момент у меня должно было бы возникнуть раздражение, Жень?