Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Привет всем. Подскажите начинающему программисту, а зачем нужна шаблонизация в виде smarty и ему подобные? Ведь куча всякого кода, зачем... Если можно в одной странице прописать <?php $a="Заголовок"; require "header.php"; в header.php файле принять переменную <p> Здесь: <?php $a > </p> Зачем городить огороды с шаблонизаторами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2015, 19:33 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Нестер, Чтобы разделить бизнес-логику и логику отображения. К тому же PHP сам является шаблонизатором ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2015, 19:49 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
NekZНестер, Чтобы разделить бизнес-логику и логику отображения. К тому же PHP сам является шаблонизатором Ну так какая разница между вставками {$title} и <?php $title > ?? Что так есть лишние элементы, с точки зрения "логики отображения", что так ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2015, 19:57 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Нестер, В большом проекте с большой кодовой базой будет легко запутаться будет в коде, который и обрабатывает данные от пользователя, делает кучу сложных действий и т. д. А в случае подхода с шаблонизатором, логика отображения лежит полностью на контенте шаблонов, а основная бизнес-логика находится уже в скриптовых файлах. Такой подход не только удобен в плане организации кода (например, верстальщик не захочет идти в PHP-файл и смотреть где там вёрстка поехала, ему удобнее работать с файлами шаблонов, где чистые HTML/CSS/JS с небольшими вставками шаблонных тегов, которые ему уже проще понять), так и в плане уменьшения связанности компонентов, например, рендерить данные не в HTML, а в JSON, тем самым мы избавимся от жёсткой привязки скрипта бизнес-логики к логике отображения. Хотя, с PHP я дела не имел особо, пару лаб на нём пришлось делать, так что, могу и ошибаться. Python+Django изначально обязывают использовать шаблонизатор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2015, 20:11 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
начинаешь писать так. потом понимаешь что нужно куча всего. потом выносишь одинаковый функционал в одельные функции. называешь "шаблонизатором" Вуаля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2015, 22:15 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
НестерНу так какая разница между вставками {$title} и <?php $title > ??Первый вариант работает и в шаблоне Smarty и в PHP, второй вообще не работает в приведённом виде. Чтоб заработало, нужно писать <?php echo $title ?> . Теперь попробуйте сравнить удобочитаемость и вероятность допущения ошибки по каждому из вариантов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2015, 22:44 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
>Нестер Однажды, я также как и вы задумался об этом: 'нужно ли мне это?'. Подключил к своему проекту шаблонизатор twig... Было очень непривычно, после использования всяких пхп-шных вставок, да новшество синтаксиса twig требовал поминутного заглядывания в справку по шаблонизатору. Но прошло какое-то время и теперь я понимаю, что это очень удобно, и теперь можно запросто отделить мух от котлет:) PS: имхо, суммарное количество кода, правда, становится больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2015, 08:15 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
vkle, Да конечно, забыл echo........) Вообщем ясно, когда всё усложняется, то нужен блэкджэк и ещё что нибудь - это и есть шаблонизаторы ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2015, 08:33 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Нестер, "методологии экстремального программирования" Первый принцип:Вам не обязательно это нужно. Второй:Сделайте самый простой работающий вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2015, 12:15 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
НестерДа конечно, забыл echo........)И вопросительный знак не туда вляпался. Итого - две ошибки на 20 знаков текста. Понимаю, что по запарке. Однако, как раз запарки то и провоцируют на ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2015, 19:23 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
НестерПривет всем. Подскажите начинающему программисту, а зачем нужна шаблонизация в виде smarty и ему подобные? Ведь куча всякого кода, зачем... Если можно в одной странице прописать <?php $a="Заголовок"; require "header.php"; в header.php файле принять переменную <p> Здесь: <?php $a > </p> Зачем городить огороды с шаблонизаторами? незачем. ты верно подметил, и верно подметили что пхп сам является по сути шаблонизатором, который развился очень сильно. просто некоторым жить трудно, вот и придумывают некую ересь. иногда даже не плохо получается. но если шаблонов куча, и для твоего сайта делаю их я, откуда тебе знать что я туда на пхп не вписал чтото зловредное - слив паролей из базы например... вот здесь может и оказаться полезным шаблонизатор. другой плюс. представь себе, смарти написаный и для пхп, и для питона, и для ноуд-джиес, и для перла, и для кучи других языков спомобных быть серверным языком для веба. тогда один шабло, будет без проблем приниматся на всех этих языках. чего не скажешь о шаблоне штмл+пхп. но это уже идёт в сторону фантастики. ну типа как ...один недавно выступал на тему, как круто использовать доктрину, тогда без проблем можно поменять базу данных с мускла на постгри скажем, и все будет работать. и естественно, ни один его проект не переходил на другую субд, но вот он себе и другим мозги парит постоянно когда надо запрос сложнее селект + джоин плюс возможно гроуп бай. так что. плюсы есть. точно также как полезен йогурт, но если сесть его ведро буздумно...то прийдёться занять на сутки стратегическую высоту 45см над уровнем пола в параше(высота толчка) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2015, 09:24 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
НестерПривет всем. Подскажите начинающему программисту, а зачем нужна шаблонизация... Я всё пишу в PHP, он весь код HTML собирает в одну строковую переменную $strHTML, которую в конечном итоге показываю в браузере. Вставки в виде <?php a$ ?> оказались неудачными хотя бы потому, что они не позволяют делать динамичные страницы. В любом случае приходится PHP-код хранить в отдельном файле от HTML, чтобы вызывать этот файл на исполнение через AJAX. Если PHP внутри кода HTML, то его через AJAX уже не вызовешь. И я добился у себя в проекте такого удобства, что основной шаблон HTML могу увидеть - как он будет выглядеть в обычном HTML-редакторе до того, как он попадет на сервер. Блоки кода вставляю в шаблон через поиск-замену между комментариями <!-- НАЧАЛО ТАКОГО-ТО БЛОКА-->..... <!-- КОНЕЦ ТАКОГО-ТО БЛОКА --> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2015, 18:56 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Нестер, Если не большие проекты, то скорей всего лучше без всяких шаблонов, но когда кода много, всякие разделы, админ панели, юзер интерфейсы, ну в общем если очень много кода. То лучше разделить логику и отображение. Хотяб чисто для того, чтоб было проще искать. Ну когда сам пишешь проект с нуля типа, то примерно знаешь, где мухи лежат, а где котлетки. А когда приходиться разбираться в чужом коде, то лучше когда есть папочки типа: template, functions и тд. И сразу становиться понятно, где, что можно и нужно искать и править и тд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2015, 19:16 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Алексей Смирновчто они не позволяют делать сдаётся мне, что просто готовить не умеешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2015, 19:59 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
DeLemurЕсли не большие проекты, то скорей всего лучше без всяких шаблоновНе могу в полной мере согласиться. Даже если проектик на три веб-странички, все равно, его удобнее делать хотя бы с минимумом шаблонов. Конечно, я не призываю для простого проекта использовать такой навороченный шаблонизатор, как Smarty. Конфигурация страниц в любом случае подчиняется каким-то минимальным требованиям HTML - head, стили, метатеги, скрипты, body со своими менюшками, основным блоком, футером - вот уже неизменная от страницы к странице структура со своими постоянными и изменяюшимися фрагментами. Шаблон? Конечно, шаблон. Простейший, средствами PHP. Постоянные фрагменты пишем прямо в коде шаблона в формате heredoc, изменяющиеся подключаем через переменные. Надо будет сделать одно глобальное изменение - правим один файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2015, 20:38 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
vkle, противоречия нет - шаблоны - с фрагментами PHP, библиотечный код - отдельно речь о том что нет особого смысла изобретать дополнительный шаблонный яхык ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2015, 21:11 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Алексей СмирновНестерПривет всем. Подскажите начинающему программисту, а зачем нужна шаблонизация... Я всё пишу в PHP, он весь код HTML собирает в одну строковую переменную $strHTML, которую в конечном итоге показываю в браузере. Вставки в виде <?php a$ ?> оказались неудачными хотя бы потому, что они не позволяют делать динамичные страницы. В любом случае приходится PHP-код хранить в отдельном файле от HTML, чтобы вызывать этот файл на исполнение через AJAX. Если PHP внутри кода HTML, то его через AJAX уже не вызовешь. И я добился у себя в проекте такого удобства, что основной шаблон HTML могу увидеть - как он будет выглядеть в обычном HTML-редакторе до того, как он попадет на сервер. Блоки кода вставляю в шаблон через поиск-замену между комментариями <!-- НАЧАЛО ТАКОГО-ТО БЛОКА-->..... <!-- КОНЕЦ ТАКОГО-ТО БЛОКА --> чтото нето. ну тоесть правильно, но не то. то что ты назвал проблемами, это да, проблемы, но решаемые елементарно и без костылей. и главное. УЧИТЫВАЯ что шаблонизатор сделан на пхп, то сразу стаёт очевидным, что если у вас без шаблонизатора трудность А, то вы её можете обойти (как минимум подсмотреть как шаблонизатор написан) шаблонизатор нужно использовать если именно серия трудностей...чтоб не пилить велосипеды, то использовать ,а если отдельные вещи, вот как Смирнов, то поддерживаю его, придумал себе выход, работает, и молодец. в отличии от того кто ради одной команды мейл винтит мейлер, ради одного нюанса смарти, и потом сидит и ищет ошибки дольше когда чтото не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2015, 21:33 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453вот как Смирнов, то поддерживаю его, придумал себе выход выход придумал, названия ob_* функций запомнить не смог похоже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2015, 21:40 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
НестерЗачем городить огороды с шаблонизаторами? чтоб код проекта был читаем и поддерживаем! Да и что б каждый раз велосипет не изобретать!! так как интересно это только по самой первости и потом хоть волком вой! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 08:35 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
NekZК тому же PHP сам является шаблонизатором И это ужасно. Двадцать лет назад интернет был в зачаточном состоянии, для задач сайтостроения двадцатилетней давности язык-шаблонизатор - это нормальное решение. Википедия нам говорит, что ПХП это не что иное как " препроцессор гипертекста ", то есть средство обработки текстовых данных, да к тому же еще "Инструмент для создания персональных веб-страниц". Короче говоря, первоначально ПХП не задумывался как язык программирования и тем более как профессиональный инструмент. Его ниша - автоматизация рутинных операций вёрски HTML-разметки для продвинутых любителей. Собственно, эту задачу - автоматизацию вёрстки и выполняют шаблонизаторы: jinja, mako, хамелеон, смарти - тысячи их, и все они с той или иной степенью сложности, удобства, функциональности выполняют одну задачу - препроцессинг гипертекста. Никому не придет в голову взять шаблонизатор и писать на нём бизнес-логику. Беда ПХП в том, что с годами этот шаблонизатор разросся до жуткого уродливого комбайна, привлекающего двоечников кажущейся простотой. Его надо было закопать сразу, как только оно научилось коннектится к СУБД, потому что это нарушает первое правило робототехники: никаких побочных эффектов в слое представления. Сейчас изобретено столько различных архитектур позволяющих эффективно разделить по слоям код разной ответственности, что размышления аля "а нахрена оно мне, если есть няшный пхп где в кучу можно валить клиентский код и инсерты в базу" похожи на рассуждения Шарикова о том, как всё взять и поделить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 09:08 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
FishHookNekZК тому же PHP сам является шаблонизатором И это ужасно. Двадцать лет назад интернет был в зачаточном состоянии, для задач сайтостроения двадцатилетней давности язык-шаблонизатор - это нормальное решение. Википедия нам говорит, что ПХП это не что иное как " препроцессор гипертекста ", то есть средство обработки текстовых данных, да к тому же еще "Инструмент для создания персональных веб-страниц". Короче говоря, первоначально ПХП не задумывался как язык программирования и тем более как профессиональный инструмент. Его ниша - автоматизация рутинных операций вёрски HTML-разметки для продвинутых любителей. Собственно, эту задачу - автоматизацию вёрстки и выполняют шаблонизаторы: jinja, mako, хамелеон, смарти - тысячи их, и все они с той или иной степенью сложности, удобства, функциональности выполняют одну задачу - препроцессинг гипертекста. Никому не придет в голову взять шаблонизатор и писать на нём бизнес-логику. Беда ПХП в том, что с годами этот шаблонизатор разросся до жуткого уродливого комбайна, привлекающего двоечников кажущейся простотой. Его надо было закопать сразу, как только оно научилось коннектится к СУБД, потому что это нарушает первое правило робототехники: никаких побочных эффектов в слое представления. Сейчас изобретено столько различных архитектур позволяющих эффективно разделить по слоям код разной ответственности, что размышления аля "а нахрена оно мне, если есть няшный пхп где в кучу можно валить клиентский код и инсерты в базу" похожи на рассуждения Шарикова о том, как всё взять и поделить. ты верно подметил, но упустил один важный момент!!! согласно любой медицинской теории, здоровье - это мыть руки с мылом всегда, не пить из горла(там бактерии), стирать гладить одежду гигиена!!! мыть всегда яблоки, здоровый сон, не сидеть до позна и прочееееееее. делиться по категориям - гигиена, питание, здоровый образ жизни... ты всё это делаешь? ниразу не сказал - а нахрена мне мыть яблоко, если можно просто протиреть??? ложишся спать всегда вовремя что бы не быть выспаным. я не говорю про выпивку и сигареты - ибо это хочеться...но врядли тебе хочеться быть не выспаным, или есть грязное, или ходить в липких носках. и вот вопрос - ты шариков??? ------ по фразе изобретено столько различных архитектур, лично явижу человека который начитался статеек. и не видит главной цели програмиррования - аффективный надёжный отказоустойчивый код - ясен пень робочий. а вот всё остальное - по мере необходимости в меру возможности. и вопрос не опытного, вполне умесный - смарти, что это ...стоит остановить любые движения назад пока не изучу, ибо дальше двигаться нет смысла, или это так себе - мож забить и не вспоминать. и ему сдесь верно ответили, смарти - не в числе первой необходимости, он не являеться критичным, учишься програмировать на пхп, учись и не забивай себе голово сейчас смарти. а плюсы шаблонизатора, я описал и ты подтвердил - не возможность в шаблоне нашкодить, слив паролей если чужой шаблон, просто ошибки - если смарти на пхп и на питоне, то один шаблон на оба движка сайта станет как родной. как думаешь, ему сейчас грозит перевод сайта с пхп на питон, или использование чужого шаблона на смарти, где жулик вписал зловредный код??? или он сам в шаблоне вписал бы ошибку, а вот будет смарти, а бизнес логика в модели, и там ошибку туже не сделает??? лозунг твой основан на верной мысли, но ты явно эту мысль не понимаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 17:42 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453учись и не забивай себе голово сейчас смарти alex564657498765453он не являеться критичным, alex564657498765453а вот будет смарти, а бизнес логика в модели, и там ошибку alex564657498765453по фразе изобретено столько различных архитектур, лично явижу человека очень, очень важно мнение твоё чурка-сан ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 18:12 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Смарти - это что-то типа крутое, что ушло не в ту сторону, а потому стало излишним и не нужным. (щас пинать меня начнут наверное, но всё же выскажу своё мнение :) ) Шаблон - это должно быть что-то простое, что просто отображает пришедшие данные. ПОДГОТОВЛЕННЫЕ К ВЫВОДУ данные. Нафига же в таком случае в Смарти наворотили циклы, условия и кучу разной фигни? Сами что-ли не разобрались как это работает? Берём один из общепринятых паттернов - MVC Модели - бизнес логика Контроллер - обработка данных из моделей, и подготовка их к выводу (ну и наоборот, подготовка введённых данных для работы) Представление - вывод ПОДГОТОВЛЕННЫХ контроллером данных. Учитывая то, что в шаблонизатор (а именно в парсер шаблонов) поступают строго определённые и ожидаемые структуры данных, то и само ядро шаблонизатора может решать, нужно ли тут данные выводить в цикле, или же это единичный объект, или же вообще выводить ничего не надо. И вот тогда рождается идеальная, по моему мнению, структура: в представлении ни буковки кода. Конечно немного больше забот ложится на плечи контроллеров, но ведь для этого они и созданы. Ну... в общем пинайте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 09:45 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Програмёр, подобный подход реализован, например, тут практика показывает, что это неудобно. Когда нужно внутри цикла реализовать что-то чуть более сложное, чем в туториале, получается каша и разметка становится совершенно нечитаемой. Например, нужна полосатая таблица неизвестного заранее размера, каждую пятую строку надо выделить цветом, каждый третий столбец содержит сумму предыдущих. Или постройка нетривиального дерева в бутстрапе. С циклами это делается элементарно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 10:10 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
FishHookПрограмёр, подобный подход реализован, например, тут практика показывает, что это неудобно. Когда нужно внутри цикла реализовать что-то чуть более сложное, чем в туториале, получается каша и разметка становится совершенно нечитаемой. Например, нужна полосатая таблица неизвестного заранее размера, каждую пятую строку надо выделить цветом, каждый третий столбец содержит сумму предыдущих. Или постройка нетривиального дерева в бутстрапе. С циклами это делается элементарно. Поставленная задача решаема просто, кроме "каждый третий столбец содержит сумму предыдущих" - так как тут можно понимать по-разному. Ну вот пример шаблонизации, о которой я говорю: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. И что тут такого запутанного или сложного? Обрати внимание, что в шаблоне я никак не указываю тип вообще. То есть, если туда попадёт массив - будет массив строк, если объект - одна строка, если false или пустой массив - пустая таблица (без строк). Итак, такой шаблон будет в себя включать 4 основных конструкции: 1. <template ['templateSource'] mainVar=var1 [v1=var2 ...] /> - загрузить подшаблон 2. {$obj->attr} - вставить значение атрибута объекта 3. {$var} - по сути $var - это тот же объект ViewObject, но с одним единственным атрибутом, который и будет вставлен 4. для первой конструкции !var1 - отрицание, для реализации вывода типа "или одно или другое". Такое не обязательно, но его присутствие добавит удобства. P.S. шаблонизацию посредством тэга, можно заменить на любую другую конструкцию (которая идэшкой будет выделяться определённым цветом, и будет более заметна в общей массе. Это так... пример на коленке :) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 13:19 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Програмёр, так ты же сейчас делаешь сверхошибку! Ты в коде контроллера захардкодил css-классы! Это же жесть как она есть! ПрограмёрБерём один из общепринятых паттернов - MVC Какой MVC, как ты можешь говорить про MVC и при этом делать вот так Код: php 1. Ты пойми, разметкой и кодом вообще должны заниматься разные люди, именно для этого и придуман MVC - для разделения ответственности, а у тебя представление размазано по файлам как манная каша по морде, в одной куче всё: пхп, css, html плавно друг-друга обтекают. Это даже не индусский код, это хуже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 13:45 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Так то да! Контроллер данные отдал. А как вы там разукрашивать будете это его не волнует!;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 13:58 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
FishHookПрограмёр, так ты же сейчас делаешь сверхошибку! Ты в коде контроллера захардкодил css-классы! Это же жесть как она есть! ПрограмёрБерём один из общепринятых паттернов - MVC Какой MVC, как ты можешь говорить про MVC и при этом делать вот так Код: php 1. Ты пойми, разметкой и кодом вообще должны заниматься разные люди, именно для этого и придуман MVC - для разделения ответственности, а у тебя представление размазано по файлам как манная каша по морде, в одной куче всё: пхп, css, html плавно друг-друга обтекают. Это даже не индусский код, это хуже. Я отдал не css класс. Я отдал тип объекта (просто исторически сложилось, что он одноимённый с css классом :) ). Я же не отдал тэги... или цвет строки! По какому принципу каждая пятая строка должна быть другого цвета? Если из-за особенности объекта - тогда пожалуйста... готово. Если из-за того, что это красиво - тогда css в помощь. P.S. Наверное ты прав. Не могу придумать, как раньше можно было обойтись для таких ситуаций без усложнения синтаксиса того, что я написал. Но это ведь недостаток css. А реализация этого на серверном языке - это костыль. Теперь же этот недостаток устранили. Потому как минимум сейчас смарти, со всеми его синтаксическими сложностями, стал не востребован. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 14:32 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
как то так...Так то да! Контроллер данные отдал. А как вы там разукрашивать будете это его не волнует!;) Неет... совсем не так (и кстати теоретически может быть ответом на письмо FishHook). Тот кто отдал данные, и ему всё-ровно что с ними будут делать дальше - это модель :) Она то и отвечает за данные. А вот контроллер как-раз отвечает за конвертацию данных на пути модель<-->представление. Потому ему то совсем не всё-ровно: в каком виде у него данные запросили, в таком он их и отдаст. А запросили у него их с припиской "и каждую пятую строку выдели мне по-особенному, пожалуйста". При наличии смарти, паттерн приобретает вид MVCC. То есть модель-контроллер-контроллер(преоразование смарти)-представление. Тогда давайте избавляться от одного из контроллеров. От основного? Смарти выполнение его задачи не потянет. Потому предложение избавиться от смарти ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 14:41 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Програмёр, для себя я выработал одно правило, которого всегда придерживаюсь: программу нужно писать так, чтобы при изменении ТЗ править код в одном месте. Если изменения касаются внешнего вида, то правиться должен только шаблон или клиентский код, если изменения в бизнес-логике, то шаблон мы трогать в идеале не должны. Не всегда на практике получается стопроцентно следовать этому правилу, но тем не менее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 14:51 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Програмёр. Потому ему то совсем не всё-ровно: в каком виде у него данные запросили, в таком он их и отдаст. А запросили у него их с припиской "и каждую пятую строку выдели мне по-особенному, пожалуйста". Если завтра твой заказчик скажет "я передумал, не каждую пятую, а каждую шестую", то ты должен править не контроллер, а представление. Контроллер отдал в контекст все необходимые клиенту данные, а пятую или шестую строку выделять решает шаблонизатор. Скажем так - это работа дизайнера/верстальщика, а не программиста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 14:54 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
FishHookКонтроллер отдал в контекст все необходимые клиенту данные, а пятую или шестую строку выделять решает шаблонизатор. Скажем так - это работа дизайнера/верстальщика, а не программиста. покрасить третий квартиль - чья забота? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 16:01 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
FishHookПрограмёр, для себя я выработал одно правило, которого всегда придерживаюсь: программу нужно писать так, чтобы при изменении ТЗ править код в одном месте. Если изменения касаются внешнего вида, то правиться должен только шаблон или клиентский код, если изменения в бизнес-логике, то шаблон мы трогать в идеале не должны. Не всегда на практике получается стопроцентно следовать этому правилу, но тем не менее. Такой подход имеет право на жизнь, и я разумеется тоже придерживаюсь приблизительно тех же правил. Однако, как обычно, есть одно НО... Сейчас мы ходим вокруг того, что дизайнер/верстальщик уж жесть как хочет, что бы каждая пятая строка была, например, красная. Ну так пускай сам и решает как он это делать будет... если его инструменты этого не позволяют, пускай запрашивает у программиста изменение входных данных (добавление флага по определённому условию). А теперь давай выберем другую ситуацию... Дизайнер (заказчик) хочет, что бы все товары, на которые присутствует скидка, были подсвечены зелёным. Это вроде работа верстальщика, подсветить определённую категорию товаров определённым цветом. Будет ли нормально, если верстальщик начнёт дёргать программиста со словами "слушай, а как мне определить, есть ли на товар скидка"? А потом после кучи матов со стороны программера, наворотит условий в шаблоне? А теперь представь, заказчик говорит "я передумал, пускай все весенние товары будут зелёными, а выделение скидок убирайте". Кто это делать должен? Верстак? Да он понятия не имеет что такое "весенний товар". Снова звонок другу (программисту)? Снова куча матов и "как это? а почему так?" ? И снова условия в шаблоне? Я бы при таком подходе попросил бы шефа нанять программиста с навыками вёрстки и уволить этого невостребованного верстальщика, который по каждому второму чиху заказчика отнимает своё и моё время (вместо того, что бы поставить задачу мне, или выполнить её самому). Основная задача разделения логики и вывода - увеличение читабельности кода и возможность чёткого разделения обязанностей двух сотрудников (верстальщика и программера). А уж в скольких местах требуется править - это не важно (главное что бы со стороны каждого сотрудника правок было минимум). Если один сотрудник не может решить задачу собственными средствами, он не бежит к другому со словами "научи ...", а даёт ему чёткую задачу к выполнению. Думаю на последний абзац тебе не будет чего сказать :) Так как предлагаемый тобой подход не имеет нужной гибкости. Но если всё же у тебя есть идеи как построить такую работу по твоему методу, не сделав его копией предложенного мной - буду рад выслушать (если это будет реально круто, а не с вывертами разными - соглашусь что твой подход лучше, и перейду со своими коллегами именно на эту систему работы, в знак полного согласия, и признания что был не прав ;) ). P.S. Вот конечно галстук сожрать как некоторый известный всем человек, я не готов, даже если окажется что ошибся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 16:05 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
ИзопропилFishHookКонтроллер отдал в контекст все необходимые клиенту данные, а пятую или шестую строку выделять решает шаблонизатор. Скажем так - это работа дизайнера/верстальщика, а не программиста. покрасить третий квартиль - чья забота? его же - дизайнера/верстальщика ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 16:05 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
FishHookего же - дизайнера/верстальщика определять принадлежность он же будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 16:11 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Програмёр, Наша беседа и конкретно твой последний пост напоминает мне разговор с одним моим бывшим начальником. Мы писали на Django один долгоиграющий госпроект и в какой-то момент меня до колик заколебала тупость джанговского шаблонизатора и его идиотский ОРМ. Я поднял вопрос о переходе на jinja2 и peewee, а поскольку я тогда был в конторе тимлидом и, собственно, я занимался какой-то минимальной архитектурой проекта, я как бы и вообще не планировал выносить это на обсуждение, но наш шеф как раз задумал расширение штата и планировал нанять нескольких человек чисто на фронтенд. Он мне тогда похожую аргументацию высказывал, дескать джанговский шаблонизатор рассчитан на клинических дебилов, и постольку поскольку в наших краях на питоне пишут мало, нам будет проще найти людей. Я тогда сказал примерно так "А зачем нам в штате целых три новых дауна? Может быть лучше поищем умных людей?". В итоге взяли даунов, а через три месяца я уволился. Это к вопросу о "сложном шаблонизаторе". Если в течении одного рабочего дня человек не может освоить смарти - ему вообще нечего делать в профессии, пусть идёт подметать трамвайные пути. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 16:21 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
ИзопропилFishHookего же - дизайнера/верстальщика определять принадлежность он же будет? конечно, а что там сложного то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 16:22 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
FishHookИзопропилпропущено... определять принадлежность он же будет? конечно, а что там сложного то? ))) Ничего... если знаешь что искать. Знаешь как для верстальщика выглядит задание такого рода? Вот представь я тебе сейчас задачу дам: "У меня есть один автомагазин (ссылка на главную). Надо, что бы все детали, относящиеся к составляющим двигателя, подсветились жёлтым цветом, а всё, что является рассходниками, слабым серым". Итак, вот сейчас ты верстальщик в проекте, не имеющий понятия о том, как работает система в целом. С чего ты начнёшь выполнение данной задачи? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 16:32 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрFishHookпропущено... конечно, а что там сложного то? ))) Ничего... если знаешь что искать. Знаешь как для верстальщика выглядит задание такого рода? Вот представь я тебе сейчас задачу дам: "У меня есть один автомагазин (ссылка на главную). Надо, что бы все детали, относящиеся к составляющим двигателя, подсветились жёлтым цветом, а всё, что является рассходниками, слабым серым". Итак, вот сейчас ты верстальщик в проекте, не имеющий понятия о том, как работает система в целом. С чего ты начнёшь выполнение данной задачи? :) Посмотрю в дебагере, что мне пихают в контекст и пойду читать доку по целевому классу. А как иначе то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 16:36 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
FishHook, крась Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 16:41 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
P.S. Аналогия :) есть 4 варианта реализации задачи "прикрутить патрон к проводам нестандартных цветов" (именно таковой и является задача верстальщика почти в любом проекте) : 1. Позвать электрика, что бы он сам подключил (стоит денег) 2. Позвонить электрику, и попросить его рассказать что надо сделать (денег не стоит, но после 5 лампочек перестанут отвечать на звонки ) 3. Полезть разбираться в проводке в щиток, и при недостаточных знания дела, стать самому хорошей заменой лампочке 4. Если электрик разводя провода по нестандартной схеме, повесил на каждый соответствующую бумажку со знаками "+", "-", "↓". То я смогу прикрутить патрон сам, без чьей либо помощи (если конечно знаю, что есть "+", "-" и заземление, однако это уже азы, соответствующие некоторой договорённости. Ведь лично для меня он мог повесить другие, если знал, что я пойму). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 16:46 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
ИзопропилFishHook, крась Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: html 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 16:49 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
FishHookПрограмёрпропущено... ))) Ничего... если знаешь что искать. Знаешь как для верстальщика выглядит задание такого рода? Вот представь я тебе сейчас задачу дам: "У меня есть один автомагазин (ссылка на главную). Надо, что бы все детали, относящиеся к составляющим двигателя, подсветились жёлтым цветом, а всё, что является рассходниками, слабым серым". Итак, вот сейчас ты верстальщик в проекте, не имеющий понятия о том, как работает система в целом. С чего ты начнёшь выполнение данной задачи? :) Посмотрю в дебагере, что мне пихают в контекст и пойду читать доку по целевому классу. А как иначе то? Изопропил ответил более чем исчерпывающе. Однако добавлю, что ранее у программиста не было задачи выводить какие-то дополнительные данные тебе в представление (а возможно таких данных в прямом виде вовсе нету в системе, и для их получения надо лезть в контроллеры, а то и в модели, и самому добавлять нужные методы, что бы получить нужные данные в таком виде). То есть в дебагере тебе даже смотреть нету на что :)... даже такого массива, как показал Изопропил там нету. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 16:51 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрP.S. Аналогия :) есть 4 варианта реализации задачи "прикрутить патрон к проводам нестандартных цветов" (именно таковой и является задача верстальщика почти в любом проекте) : 1. Позвать электрика, что бы он сам подключил (стоит денег) 2. Позвонить электрику, и попросить его рассказать что надо сделать (денег не стоит, но после 5 лампочек перестанут отвечать на звонки ) 3. Полезть разбираться в проводке в щиток, и при недостаточных знания дела, стать самому хорошей заменой лампочке 4. Если электрик разводя провода по нестандартной схеме, повесил на каждый соответствующую бумажку со знаками "+", "-", "↓". То я смогу прикрутить патрон сам, без чьей либо помощи (если конечно знаю, что есть "+", "-" и заземление, однако это уже азы, соответствующие некоторой договорённости. Ведь лично для меня он мог повесить другие, если знал, что я пойму). 5. Посмотреть в электрическую схему. Если ваш сотрудник не умеет читать схемы, не давайте ему заданий связанных с проводами и током, а лучше увольте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 16:52 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрИзопропил ответил более чем исчерпывающе. Однако добавлю, что ранее у программиста не было задачи выводить какие-то дополнительные данные тебе в представление (а возможно таких данных в прямом виде вовсе нету в системе, и для их получения надо лезть в контроллеры, а то и в модели, и самому добавлять нужные методы, что бы получить нужные данные в таком виде). То есть в дебагере тебе даже смотреть нету на что :)... даже такого массива, как показал Изопропил там нету. Обычно, программист не делает отсебятину, а пишет классы в соответсвии с интерфейсом, разработанным архитектором проекта. Как правило, в конторе формат данных, передаваемых в контекст шаблона и/или REST-resoponse стандартизируется и вопросов не возникает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 16:57 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
FishHook Код: html 1. не допускайте его к монтажу электрооборудования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 17:01 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
FishHookПрограмёрИзопропил ответил более чем исчерпывающе. Однако добавлю, что ранее у программиста не было задачи выводить какие-то дополнительные данные тебе в представление (а возможно таких данных в прямом виде вовсе нету в системе, и для их получения надо лезть в контроллеры, а то и в модели, и самому добавлять нужные методы, что бы получить нужные данные в таком виде). То есть в дебагере тебе даже смотреть нету на что :)... даже такого массива, как показал Изопропил там нету. Обычно, программист не делает отсебятину, а пишет классы в соответсвии с интерфейсом, разработанным архитектором проекта. Как правило, в конторе формат данных, передаваемых в контекст шаблона и/или REST-resoponse стандартизируется и вопросов не возникает. Задача: Есть таблица товаров. Каждый товар входит в некую группу. Надо вывести особым цветом товары, с максимальной популярностью в группе, а в последней колонке вывести название этой группы. В шаблон тебе поступают данные: Код: php 1. 2. 3. 4. 5. 6. 7. 8. Итак, ты верстак, и знаешь азы программирования (циклы, условия, использование переменных, арифметические операции). Выполни задачу, оставив сам шаблон в нормальном, читабельном виде. Ах да... ни разу не обратившись за помощью к квалифицированному программисту :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 17:25 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
fishhook прав на сто процентов! Здесь и сейчас можно убиться в оч раз доказывая обратное... тот контроллер который подрисовывает что то для разметки становиться постепенно ТТУК! Контроллер всего лишь клей между моделью и представлением... не более! Представь себе сервис который отдает тебе данные... как и в каком порядке их расставлять решать тебе... это и есть представление! Уже говорено переговорено на эту тему! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 17:29 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Вот я задачку написал... сижу оцениваю, сколько бы я потратил бы на решение задачи. По моему мнению от 30 минут до часа... Написав предела 20 строк кода. Думаю верстальщик потратил бы день минимум. Только у него в шаблоне нету возможности писать 20 строк кода :) Иначе шаблон превратится в кашу из вёрстки и логики. Потому на его уровне, по моему, задача не решаема. Можешь ли ты доказать обратное? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 17:30 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
как то так...fishhook прав на сто процентов! Здесь и сейчас можно убиться в оч раз доказывая обратное... тот контроллер который подрисовывает что то для разметки становиться постепенно ТТУК! Контроллер всего лишь клей между моделью и представлением... не более! Представь себе сервис который отдает тебе данные... как и в каком порядке их расставлять решать тебе... это и есть представление! Уже говорено переговорено на эту тему! Да нет же )))) Порядок определяется контроллером. Особенности вывода определяются контроллером. Формат данных определяется контроллером!!! Представлением определяется только внешний вид данных. Возвращаясь к последней задаче: Вывести товары в порядке спадания популярности! Как в представлении решить задачу?! (хотя для программиста в контроллере она мега простая). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 17:34 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Что там доказывать? Что верстальщик сверстал макет а потом проггер его режет вдоль и поперек? Кто тебе сказал что представлением должен заниматься верстальщик? По твоей же анналогии верстальщик должен втыкать в смарти и еще кучу шаблонизаторов для того что бы работать;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 17:36 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрFishHookпропущено... Обычно, программист не делает отсебятину, а пишет классы в соответсвии с интерфейсом, разработанным архитектором проекта. Как правило, в конторе формат данных, передаваемых в контекст шаблона и/или REST-resoponse стандартизируется и вопросов не возникает. Задача: Есть таблица товаров. Каждый товар входит в некую группу. Надо вывести особым цветом товары, с максимальной популярностью в группе, а в последней колонке вывести название этой группы. В шаблон тебе поступают данные: Код: php 1. 2. 3. 4. 5. 6. 7. 8. Итак, ты верстак, и знаешь азы программирования (циклы, условия, использование переменных, арифметические операции). Выполни задачу, оставив сам шаблон в нормальном, читабельном виде. Ах да... ни разу не обратившись за помощью к квалифицированному программисту :) Код: html 1. 2. 3. 4. 5. не говоря о том, что это легко делается джаваскриптом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 17:41 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
как то так...Что там доказывать? Что верстальщик сверстал макет а потом проггер его режет вдоль и поперек? Кто тебе сказал что представлением должен заниматься верстальщик? По твоей же анналогии верстальщик должен втыкать в смарти и еще кучу шаблонизаторов для того что бы работать;) Опыт работы тим лидом сказал (пока он не большой: 2 человека + я сам... однако же...) :). Вот будешь работать таковым (не знаю, может уже работаешь, но по рассуждениям, не думаю) - столкнёшься с проблемой, что для решения задачи, тебе потребуется вместо 2 узкоквалифицированных работника, 2 "профи на все руки", которые при этом всё-ровно не смогут работать параллельно (ведь часть кода программер сможет написать, только когда верстальщик закончит свою часть) - тогда и задумаешься, почему представлением должен заниматься ТОЛЬКО верстальщик :) из аналогии про лампочку : кто тебе сказал, что лампочку должен вкручивать человек сам, а не электрик. - кошелёк сказал, когда опустел на вызовах электрика, для закручивания лампочки :) P.S. Нафига мне верстальщик, если я всё-ровно все его шаблоны потом перелопачивать буду, и разбираться в них что и где выводится... А что потом... Надо будет что-то изменить - он полезет в исправленные и порезанные мной шаблоны?! Не забываем, он знает азы программирования... А в идеале (вариант, который предложил я), он и их знать не обязан. из аналогии с лампочкой : мне не надо знать, как работает электричество, и что такое закон ома, если мне требуется всего лишь вкрутить лампочку. Для решения задачи мне достаточно знать, что лампочку вкручивают по часовой стрелке, что в патрон нельзя совать пальцы и что делать это лучше при выключенном питании (что бы меня наверняка не треснуло током). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 17:49 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Програмёркак то так...fishhook прав на сто процентов! Здесь и сейчас можно убиться в оч раз доказывая обратное... тот контроллер который подрисовывает что то для разметки становиться постепенно ТТУК! Контроллер всего лишь клей между моделью и представлением... не более! Представь себе сервис который отдает тебе данные... как и в каком порядке их расставлять решать тебе... это и есть представление! Уже говорено переговорено на эту тему! Да нет же )))) Порядок определяется контроллером. Особенности вывода определяются контроллером. Формат данных определяется контроллером!!! Представлением определяется только внешний вид данных.хорошо, что разработчики WebAPI с Вами не согласны :) Если пользователь вместо GridView хочет посмотреть данные в виде PieView, то Вы пишете PieController, так что-ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 17:52 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Ну я так и понял что у тя подход широкого профиля... мастер на все руки... MVC паттерн как раз отменяет это требование и оставляет каждому свою узкую специализацию;) Так то я не удивлюсь если ты и дизайнером оформителем на пол ставки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 17:56 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Програмёр, а вот понадобится Вам 10 современных, красивых, респонсив тем для сайта, как быстро Вы их сделаете, а как быстро профессиональный верстальщик? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 17:58 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
FishHook, Ты полностью вырезку из шаблона напиши :). Со смарти знаком из далека (в жизни 2 раза видел шаблоны... потому могу ошибиться)... но попытаюсь описать, как я понимаю данный код: 1. Сгруппировать элементы (учитывая, что нету закрывающей команды, видимо цикл работает только на описанной операции и применяется к gr) 2. Отсортировать элементы по популярности в группах (учитывая, что нету закрывающей команды, видимо цикл работает только на описанной операции, и применяется к products) 3. Если это первая итерация цикла, то сделать что-то 4. Цикл вывода товаров группы ОШИБКИ 1. Какая нафиг группировка по group :) У нас group - это массив значений. Один товар принадлежит нескольким группам. Куда ему группироваться?! В какую из них?! 2. Сортировка это хорошо, но задача не предусматривала смену порядка элементов. 3. Какая первая итерация?! эта команда находится за пределами какого-либо цикла 4. Ну... тут кагбы ошибок нету... Но учитывая ошибки в трёх предыдущих пунктах, тут явно выведется не то, что надо :) Итак, задача не решена (а ведь ты не верстак, а программист... У верстака знаний в голове меньше, чем у тебя :) ). Ещё раз попробуешь поставленную задачу решить?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 18:09 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрЗадача: Есть таблица товаров. Каждый товар входит в некую группу. Надо вывести особым цветом товары, с максимальной популярностью в группе, а в последней колонке вывести название этой группы.А если пользователь захочет видеть эти товары в виде "аля облако тегов", где более популярные товары отображаются более крупно и контрастно? И чтобы это "облако" было кликабельно. Это будет некий компонент, пользовательские клики на который будет обрабатывать контроллер, как клики кнопки. Но это будет представление, как таже кнопка, или таблица, или список :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 18:13 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
skyANAПрограмёрпропущено... Да нет же )))) Порядок определяется контроллером. Особенности вывода определяются контроллером. Формат данных определяется контроллером!!! Представлением определяется только внешний вид данных.хорошо, что разработчики WebAPI с Вами не согласны :) Если пользователь вместо GridView хочет посмотреть данные в виде PieView, то Вы пишете PieController, так что-ли? GridView и PieView - это разные виды. То есть разные представления одного и того же объекта. Ничего общего с форматом данных или их сортировкой это не имеет. То есть, отдав в представление объект в определённом формате, я смогу без проблем представить его в любом из этих двух вариантов, не написав ни байтика логики (ни цикла, ни условий). И при этом мне ничего не потребуется сортировать или группировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 18:14 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрskyANAпропущено... хорошо, что разработчики WebAPI с Вами не согласны :) Если пользователь вместо GridView хочет посмотреть данные в виде PieView, то Вы пишете PieController, так что-ли? GridView и PieView - это разные виды. То есть разные представления одного и того же объекта. Ничего общего с форматом данных или их сортировкой это не имеет. То есть, отдав в представление объект в определённом формате, я смогу без проблем представить его в любом из этих двух вариантов, не написав ни байтика логики (ни цикла, ни условий). И при этом мне ничего не потребуется сортировать или группировать.Для Вашего сведения в WebAPI определение формата вынесли за рамки контроллера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 18:18 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
skyANAПрограмёр, а вот понадобится Вам 10 современных, красивых, респонсив тем для сайта, как быстро Вы их сделаете, а как быстро профессиональный верстальщик? :) чёто заглянул, что такое Responsive theme. Это то же самое, что и обычная тема? То есть шкура сайта?! Если да... то пускай верстак её пишет на здоровье... А мне просто заявит список необходимых ему данных. Я накатаю для него контроллеры необходимые, но в вёрстку даже смотреть не буду :) А вот FishHook как-раз таки программиста в вёстку хочет отправлять... Ну или наоборот верстака в контроллеры :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 18:18 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Програмёр, а вообще не могли бы Вы пояснить примером то, что называете "отдав в представление объект в определённом формате"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 18:19 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрskyANAПрограмёр, а вот понадобится Вам 10 современных, красивых, респонсив тем для сайта, как быстро Вы их сделаете, а как быстро профессиональный верстальщик? :) чёто заглянул, что такое Responsive theme. Это то же самое, что и обычная тема?Это от понятия responsive design . То есть "шкура сайта", что адаптируется под различные размеры холста и устройства :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 18:22 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
skyANAПрограмёрпропущено... GridView и PieView - это разные виды. То есть разные представления одного и того же объекта. Ничего общего с форматом данных или их сортировкой это не имеет. То есть, отдав в представление объект в определённом формате, я смогу без проблем представить его в любом из этих двух вариантов, не написав ни байтика логики (ни цикла, ни условий). И при этом мне ничего не потребуется сортировать или группировать.Для Вашего сведения в WebAPI определение формата вынесли за рамки контроллера. Тут, уж будьте так любезны, простить моё невежество. Однако я, к моему глубокому огорчению, не ведаю, чем является это дивное творение, о котором вы мне решили поведать. Если вас не затруднит, поберегите мой затухающий и измотанный под конец дня разум, и презентуйте ту особую, необыкновенную особенность этой программы, дабы я мог понимать, каковы же я допустил ошибки в изложении своего виденья, и к чему стоит привести нашу затянувшуюся, хотя и прекрасно аргументированную беседу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 18:28 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Никто из присутствующих не ведает что ты понимаешь под паттерном мвц... однако, исходя из твоих рассуждений следует, что ты допускаешь банальную ошибку в понятиях этой архитектуры... ты не одинок! Куча новичков сталкиваются с той же проблеммой! тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 18:36 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
skyANAПрограмёр, а вообще не могли бы Вы пояснить примером то, что называете "отдав в представление объект в определённом формате"? формат, я имею ввиду его структуру, и структуру данных в нём. то есть, разные форматы: ["name"=>"hello","popular"=>10,"group"=>"myGroup"] и ["myGroup"=>["name"=>"hello","popular"=>10]] или вот эти: ["name"=>"hello","popular"=>"10000","group"=>"myGroup"] и ["name"=>"hello","popular"=>"10`000","group"=>"myGroup"] Но теоретически, если в представлении нужно число, разбитое по разрядам, то такое разбиение должно приходить с контроллера. Вот насчёт последнего, если есть возражения, я не отрицаю... Но напомню, что идея не вынашивалась, а возникла "при написании кода на коленке". Возможно некие стандарты типа формат вывода чисел, дат и чего-то там ещё, стоит предусмотреть в шаблонах (однако это должны быть некие системные настраиваемые заготовки, которые верстак править не сможет, а сможет только настраивать нужный вывод). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 18:40 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
особую, необыкновенную особенность = особую необыкновенность. Увлёкся и повторился ))) сорри. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 18:43 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
как то так...Никто из присутствующих не ведает что ты понимаешь под паттерном мвц... однако, исходя из твоих рассуждений следует, что ты допускаешь банальную ошибку в понятиях этой архитектуры... ты не одинок! Куча новичков сталкиваются с той же проблеммой! тынц Не допускаю. Если внимательно почитать мои посты, то я не один раз говорил явно, а на протяжении всей беседы косвенно и прямо утверждаю, что контроллер - готовит данные для вывода. То есть ещё раз: Модель - логика!! Контроллер - подготовка к выводу или подготовка ввода для передачи в модель (банальный переводчик между моделью и представлением) Представление - красивый (удобный) вывод того, что отдал контроллер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 18:47 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Идеальный контроллер - пустой контроллер!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 18:55 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
как то так...Идеальный контроллер - пустой контроллер!!! Ну нет же :) С чего такие выводы?! Ты уже озвучил пол дюжины изречений, но ни одного не аргументировал, в то время, как я аргументированно отверг каждое из них! Идеальный класс - пустой класс? Идеальное представление - пустое представление? Идеальный объект - пустой объект?! Отсутствие кода не является его идеальным состоянием. Так как отсутствующий код - неработающий код! Соответственно пустой контроллер - контроллер не выполняющий своих обязанностей. Как не крути, в обязанности контроллера входит - взять данные у модели и передать представлению. Даже если ему не надо их как либо преобразовывать (что говорит не об идеальности контроллера, а скорее об отсутствии излишеств в модели, или об недостатке удобства в представлении), он всё-ровно должен их у модели взять, а в представление отдать. Ведь, если поляк будет общаться с русским, и вдруг поляк скажет что-то, что явно понятно его собеседнику, как считаешь, переводчик при этом должен промолчать (и загреметь с работы, если всё же сказанное было понято неверно), или же он должен продолжая выполнять свои обязанности, перевести даже такую очевидную фразу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 19:14 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
блин, 14 февраля, девчонки уже все глазынкьки проглядели а они все о том же, о вечном ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 19:14 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
-k2-блин, 14 февраля, девчонки уже все глазынкьки проглядели а они все о том же, о вечном Я вообще-то в перерывах беседы убираю и готовлю... Жду свою с работы )) Обещала по окончанию рабочего дня в гости приехать :) А что ещё делать то? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 19:17 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
авторКак не крути, в обязанности контроллера входит - взять данные у модели и передать представлению. На этом его работа заканчивается... рад что ты это понял...;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 19:18 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
бавария-гамбург 8:0 :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 19:21 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
как то так...авторКак не крути, в обязанности контроллера входит - взять данные у модели и передать представлению. На этом его работа заканчивается... рад что ты это понял...;) ТРОЛЬ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 19:29 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Оч ожидаемое заявление. Видимо твои псевдоаргументы исчерпали себя;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 19:41 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрКонтроллер - подготовка к выводу или подготовка ввода для передачи в модель (банальный переводчик между моделью и представлением) как то так...Идеальный контроллер - пустой контроллер!!! ПрограмёрКак не крути, в обязанности контроллера входит - взять данные у модели и передать представлению. как то так...На этом его работа заканчивается... рад что ты это понял...;) Вот по-этому троль. Пока не опишешь разницу в смысле моих двух цитат - ТЫ ТРОЛЬ!!! Блин!!! За такое банить надо! Потому и заходишь сюда как гость, просто что бы программистов потролить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 19:50 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Присядь три раза... глубоко вдохни и потом выдохни...;) Еще раз. Для программистов! Банк клиент ведут переписку. Посредник почтовая служба. Взял письмо и передал в том виде в котором тебе вручили для передачи. Не твоя забота мять письмо. Открывать. Менять содержимое, в надежде что это будет удобно тому или иному получателю. Вот твой контрллер! И банк и клиент сами разберуться с данными в конверте!!! Пс: не бери ответственности больше чем можешь унести...;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 20:04 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Модератор: Коллеги, хватит уже оффтопить и переходить на личности. -- vkle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 20:29 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
как то так...Присядь три раза... глубоко вдохни и потом выдохни...;) Еще раз. Для программистов! Банк клиент ведут переписку. Посредник почтовая служба. Взял письмо и передал в том виде в котором тебе вручили для передачи. Не твоя забота мять письмо. Открывать. Менять содержимое, в надежде что это будет удобно тому или иному получателю. Вот твой контрллер! И банк и клиент сами разберуться с данными в конверте!!! Пс: не бери ответственности больше чем можешь унести...;) Почтовая служба взяла письмо у банка так, как удобно ему (через почтовый ящик, в который сотрудник банка выходя с работы это письмо кинул), и доставила его клиенту так, как ему это удобно (предложив забрать в ближайшем отделении). Пустой контроллер - это почтовый ящик. Как банк туда письмо кинул, так его клиент оттуда и должен забрать!!! Вот аналог пустого контроллера (который ничего не сделал, он просто есть и его можно использовать). Никогда так почту не получал? "Заберите пожалуйста ваше письмо из почтового ящика по адресу г.Иркутск, ул. Тимирязева, дом 61 . С уважением, почтовое отделение Москвы." Я бы радостно посмотрел, как бы ты за своим письмом туда покатил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 21:48 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрskyANAПрограмёр, а вообще не могли бы Вы пояснить примером то, что называете "отдав в представление объект в определённом формате"? формат, я имею ввиду его структуру, и структуру данных в нём. то есть, разные форматы: ["name"=>"hello","popular"=>10,"group"=>"myGroup"] и ["myGroup"=>["name"=>"hello","popular"=>10]] или вот эти: ["name"=>"hello","popular"=>"10000","group"=>"myGroup"] и ["name"=>"hello","popular"=>"10`000","group"=>"myGroup"] Но теоретически, если в представлении нужно число, разбитое по разрядам, то такое разбиение должно приходить с контроллера. Вот насчёт последнего, если есть возражения, я не отрицаю... Но напомню, что идея не вынашивалась, а возникла "при написании кода на коленке". Возможно некие стандарты типа формат вывода чисел, дат и чего-то там ещё, стоит предусмотреть в шаблонах (однако это должны быть некие системные настраиваемые заготовки, которые верстак править не сможет, а сможет только настраивать нужный вывод).Ясно. Это называется разные модели представления (ViewModel). В мире веб есть такое понятие как *content negotiation* и *content type*. Это когда клиент запрашивает у одного и того же метода сервера данные то в формате JSON, то в XML, или JPEG, или HTML. Лично я об этом формате подумал изначально. Но потом понял, что Вы о ViewModel, просто решил уточнить. В MVC не обязательно присутствует ViewModel, и при этом представлений может быть несколько (View). Так что то, о чём Вы рассуждаете - это не единственно верный вариант :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 22:51 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
И да, логику преобразования модели в тот, или иной формат, или в ту или иную модель обычно отделяют от контроллера. Выносят в ТакойТоFormatter, или СякойТоConverter, или НекийViewEngine :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 23:04 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
skyANAИ да, логику преобразования модели в тот, или иной формат, или в ту или иную модель обычно отделяют от контроллера. Выносят в ТакойТоFormatter, или СякойТоConverter, или НекийViewEngine :) Последние 2 сообщения познавательны. Спасибо. Но вот практический смысл выноса преобразований из контроллера мне не очевиден :) Есть ссылка на пример, где это используется? Для более наглядного понимания зачем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 23:15 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Пустой контроллер - это общение клиента и банка напрямую без посредников. Клиент беседует с мэнеджером. Получает от него выписки в удобном для банка виде и сам соображает какие поля ему нужно выделить или сложить. Кто мешает вызывать методы модели напрямую из представления? Куда мы подпихнем твой код с цсс классом в таком случае? Подумай на досуге;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 23:26 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
как то так...Пустой контроллер - это общение клиента и банка напрямую без посредников. Клиент беседует с мэнеджером. Получает от него выписки в удобном для банка виде и сам соображает какие поля ему нужно выделить или сложить. Кто мешает вызывать методы модели напрямую из представления? Куда мы подпихнем твой код с цсс классом в таком случае? Подумай на досуге;) Менеджер - это прослойка между бухгалтером/финансистом и клиентом. Вот давай пускай клиенты напрямую с бухгалтерами общаются. Вот тогда эта схема будет соответствовать тому, что ты написал. Мешает то, что в обязанности модели не входит формирование данных для представления. А в обязанности представления не входит копание в прямых, не преобразованных данных модели. Аналогия 1. Это то же, что и заявить "А что мешает пилоту лично провести инструктаж пассажиров перед взлётом?" Да по сути ничего... но нафиг надо, если для этого есть специально обученный человек. Пилоту надо о другом думать - о полёте, а не об инструктаже пассажиров! Аналогия 2. Что тебе мешает текст вводить непосредственно в виде двоичных кодов, а не в виде символов? Да ничего )) Только ты тогда уже будешь думать не о тексте, а о том, какой код соответствует следующему символу! Аналогия 3. Что тебе мешает писать программы в шестнадцатеричных кодах? - Ничего. Просто нафиг надо, если для этого есть специальная прослойка! Аналогия 4. Что мешает заваривать чай прямо в чайнике и пить из него? - Ничего, но нафиг надо, если для этого есть чашка! Аналогия 5. Что мешает кушать макароны руками? - Ничего, но нафиг надо, если есть специальный для этого инструмент! Думаю достаточно для осознания "зачем". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2015, 00:04 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Мешает то, что в обязанности модели не входит формирование данных для представления. А в обязанности представления не входит копание в прямых, не преобразованных данных модели. http://zendframework.ru/anonses/model-with-mvc прочти уж наконец! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2015, 00:41 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Пс. Обрати внимание на год публикации... реформатор!;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2015, 00:57 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
НестерЗачем городить огороды с шаблонизаторами? авторчтоб код проекта был читаем и поддерживаем! главный вопрос - КЕМ ? Горькая правда в том, что шаблонизация в частности и прочая ООП-инкапсуляция не нужна программисту. Вообще. Только палки в колеса вставляет. Он сам прекрасно все помнит и уж как-нибудь сам с собой договорится у себя в голове. Поэтому год за годом они задаются этим вопросом. Она нужна менеджеру проекта, верстальщику. Ну и этому программисту, выступающему в будущем в этих ролях, когда он уже все забыл. А тот кто сует шаблоны везде - забыл за ритуалом суть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2015, 03:09 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
как то так..., беседа себя исчерпала. Серьёзно, надоело уже!!! я тебе говорю, что 2+3=5, после чего ты мне отвечаешь "ну почти..." и кидаешь ссылку, где описывается, что 3+2=5. КАКОЙ СМЫСЛ?! Я говорю то же, что там написано, только другими словами! И между прочим, ты уже кидал ссылку про ТТУК, и мы её уже обсуждали. Потому, или чётко говори в чём я не прав, приводи конкретные доводы с примерами (например из Yii, по типу "ты предлагаешь вот так, а реально надо так потому, что..."), или просто давай прекращать. P.S. Мне "просто потрепаться" не по кайфу, иначе бы я в ПТ сидел. Я тут в целях самообучения и помощи другим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2015, 09:40 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
17264934 ни в каком контроллере работа по изменению дополнению удалению данных не производится... контроллер получил отдал. Если есть необходимость обработать данные для этого существуют два прекрасных места: модель и представление!!! Иначе ТТУК! Желаю успехов! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2015, 11:50 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Вопервых, почитав дискусию понял. ПРОГРАММЕР, был в мойм мнении(по предыдущим постам) человек который будет хорошим программистом, похоже я ошибался... он уже не в числе средних далеко :) FISHHOOK, которого я назвал любителем статеек, на самом деле встретились два сапога, говорят одно и тоже, только лево право перепутанно, не изза того что сапоги разные, а изза того что дополняют один другого :). === К дискусии. Во первых в постах людей, просматривается явная логическая ошибка, шаблон , и буква Ви в MVC. это ведь не одно и тоже. шаблон шасть троицы называемой MVC, но не тоже самое. сдесь, и это часто - программисты пытаются оттолкнуться от правильного понимания патерна, и делать выводы относительно архитектуры на конкретном решении. я считаю это не верно. патерн, наше слово - шаблон. сказать, вот ты сделал контроллер, модель и виьюху, но это не правильная организации по мвс шаблону, это тоже что сказать - вот написали резюме, есть опыт данные, но это не правильно согласно шаблона резюме в МС ВОРД. шаблон проектирования, это всеголишь изначально аналог шаблона в ворде или любых других редакторах. просто чтобы не клацать одно и тоже постоянно. (речь идет о редакторах проектов на языке UML скажем). да у некоторых есть названия, и устоявшиеся как термины, но это лишь потому что часто подобная задача легко решается в рамках шаблона. и важный момент - не как часто напишут на хабре - шаблон, оптимальное решение задачи, а именно подобные задачи решаются часто в рамках шаблона. аналог - комбинации в шахматах. у них тоже есть названия - по ним тоже учатся в шахматы играть, но ведь никому не придёт в голову сказать, что если в нападении ХХХХинского, игрок третий ход сделал по другому, то он лох... он адаптировался к ситуации. ибо ХХХХинского, часто хорошо себя показывает при определённом расположении фигур в той части достки, где оно разыгрывается, но есть фигуры на переферии, и в доле случаев они позволяют сделать ход, который уже мешает до конца провести атаку по такому шаблону. Шаблон, это следсвие а не причина. вот я делая свой движок минималистичный похож на кохановский был... просто разделяю идеи заложенные там, но имел две особенности которые я реализовал - давно мечтал это сделать. 1. (чтоб было понятно) индексный файл содержит код Request::factory()->execute()->echo_header()->echo_body(); там же риквест прочитает входящие хедеры, и запомнит если было клиент хочет получить джейсон, или хмл формат. и вьюха, как нивчом небывало вызывается для рендера шаблона, но перед применением шаблона, идёт обзор - а не просил ли клиент, данные в сыром виде джейсон или хмл формат, если да - выдача. тоесть во вьюхе есть некая локика...и что? 2 работая с моим ОРМ, невозможно заметить что в базе совсем другие поля, а текста в открытом виде вообще нету, всё зашифрованно... есть поля недоступные для кода выше, есть нечитаемые(читаются как пустая строка)... всё реализованно (я назвал in out fucntions) - для любого поля в модели(поля которые согласуются с базой) - можно назначить функции ин_поле_ф и аут_поле_ф Значение читаемое из базы всегда пройдёт через аут_поле_ф(например пароль всегда считается как пустая строкка, а имя всегда считается в расшифрованном виде) и при записи ин_поле_ф - тотже пароль захешируется, а имя зашифруется, а поле не предназначенное для изменения - станет нулл и не попадёт в скл строку) тоже комуто покажется глупым. но ввиду бинарной работы с данными где всё шифруется, шифры разные, и логика построения ключей шифрования разная может быть, и хеширование отличатся... малейшая ошибка и накрылось все медным тазом.для меня очень важно было, заложить это все глубже методов которые переопределёются в потомках орм(дополняются) дабы преобразования полей работали как часы, и тогда при написании потомка модели, на тест ставим - что записанно должно считаться в точности...что значит что нет ошибки в доопределении что и как шифровать, тест прошол и можно быть увереным, что в контроллере - любые манипуляции с моделью, либо не дадут ошибку в шифровании/дешифровании, либо будет эксепшин. ...кслову, ошибки всплывали в логере, в профайлере, в рендере...но ниразу не всплыли в шифравании, хотя методы хеширования и шифрования менялись, но и через год читались записи которые были записаны совсем по другим методам скрытия информации. так что я считаю - что не нужно давить и ставить в край угла, какуюто теорию, о том что вот есть шаблон, или методика... шаблоны и методики полезно знать. но при решении задачи, нужно сконтрировать внимание исключительно на задачи, и если логика приводит к решению похожим на некий модуль существующий на гитхабе, брать его, если на шаблон или методику - взять её(проще не сделать ошибки, следую протореной дороге) - но влюбом случае, слово шаблон МВС или любой другой, звучит уже в начале написания кода. ======== шаблонизатор - надо или нет. основные я и другие описали - удобно, кросплатформеность, при наличии реализации шаблонизатора под другие платформы(язык, фреймворк...) полная. защита от ошибок связаных с нечаянным или специальным написанием пхп кода зловредного. смарти с этими задачами справляется. если на проекте стоят такие потребности, не надо изобретать велосипед - смело надо ставить смарти. ----- стоит ли его узиучать изучая пхп... зацикливатся не стоит, но учитывая что его изучение в общих чертах займёт как верно подметили не больше дня, то можно и изучить когда будет возможность, или необходимость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 13:37 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, штоб вы по таким ТЗ работали :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 14:29 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, Оо шифрование полей и значений базы данных! Мсье знает толк в оверхеде! Нужно ещё шифровать кэш ОРМа, раздел на котором лежит база, а сам сервак поместить в сейф с двухметровой толщины стальными стенами. И вообще отключить его от интернета, чтобы хакеры точно не взломали. Думаю вы с автором FVMas сдружились бы и создали нечто уникальное, принципиально новое и не имеющее аналогов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 14:51 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, Алёша, зачем вы постите такие длинные портянки? Неужели вы думаете, что кто-то на этом форуме будет всерьез воспринимать рассуждения гражданина не владеющего зачатками грамотности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 14:57 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
NekZalex564657498765453, Оо шифрование полей и значений базы данных! Мсье знает толк в оверхеде! Нужно ещё шифровать кэш ОРМа, раздел на котором лежит база, а сам сервак поместить в сейф с двухметровой толщины стальными стенами. И вообще отключить его от интернета, чтобы хакеры точно не взломали. Думаю вы с автором FVMas сдружились бы и создали нечто уникальное, принципиально новое и не имеющее аналогов :) второй пункт ТЗ был. При физическом доступе к винчестерам сервера, не должно быть возможности вскрыть данные пользователя. либо пользователь делает запрос с ключом, на основании чего можно вскрыть данные, либо вмешиваться в работающий сервер, исправить код, чтобы куда то в дамп поскидывать ключи, притом так, чтоб это не заметил монитор, который контролирует неизменность файлов кода. но без изменения кода, должно быть не возможным считать данные. моё дело маленькое. надо скрыть, скрыл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 16:41 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
NekZalex564657498765453, Оо шифрование полей и значений базы данных! Мсье знает толк в оверхеде! Нужно ещё шифровать кэш ОРМа, раздел на котором лежит база, а сам сервак поместить в сейф с двухметровой толщины стальными стенами. И вообще отключить его от интернета, чтобы хакеры точно не взломали. Думаю вы с автором FVMas сдружились бы и создали нечто уникальное, принципиально новое и не имеющее аналогов хотя я не понимаю что вызывает такую реакцию. я понимаю что нестандартно...но охать надо было бы , если б я сказал что на каждом своём сайте шифрую всё :). один закащик хахотел так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 16:45 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
NekZalex564657498765453, Оо шифрование полей и значений базы данных! Мсье знает толк в оверхеде! Нужно ещё шифровать кэш ОРМа, раздел на котором лежит база, а сам сервак поместить в сейф с двухметровой толщины стальными стенами. И вообще отключить его от интернета, чтобы хакеры точно не взломали. Думаю вы с автором FVMas сдружились бы и создали нечто уникальное, принципиально новое и не имеющее аналогов да когда писал - отвлекали по работе, поэтому по чуть вышло много. а как увидел много текста, жалко стало удалять :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 16:53 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453закащик хахотел Я тоже хахотел, "всем офесом". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 16:58 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
-k2-alex564657498765453, штоб вы по таким ТЗ работали :) спосибо, люблю весёлых и остроумных людей... многовато вышло, и немного путано. стыдно :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 16:59 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, я не в числе средних в хорошем или плохом смысле? :) Ты очень много написал, тем самым запутав всех, что именно хочешь сказать. Напиши пожалуйста кратко, что и как :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 18:25 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, Эх... добрался домой... потратил 20 минут, что бы почитать что ты написал, разобраться... С твоими рассуждениями типа "шаблон - это всего ли шаблон, и не надо ему следовать. Если надо - меня под свои нужды" (не цитата... приблизительная передача смысла) я не согласен. Так вот, всегда есть 3 варианта действий: 1. Шаблон подходит - значит его используем при написании кода 2. Шаблон не подходит - взять другой, который теоретически подойдёт и вернуться к пункту 1. 3. Ни один из желаемых не подошёл - не обращать внимания на паттерны и писать как удобно тебе. Так вот, ты говоришь о третьем пункте, как о немного модифицированном первом! Как часто ты пытаешься из ботинок сделать летние босоножки? А вот перепиливание шаблона и его использование вне его области применения - это как-раз попытка ботинки в босоножки превратить. Есть установленные правила, высчитанные и продуманные, и нефига от них уходить! Ушёл от правила - ушёл от шаблона! (прикольный лозунг получился надо бы предложить как девиз шаблонизации) Почему отклонение от ТЗ называют отклонением, а не адаптацией?! представляешь такое? "Уважаемый клиент, мы адаптировали Ваше ТЗ под наш движок. Первая адаптация в подарок. С уважением и заботой Сайтострой" От ТЗ отклонились, а вот шаблон почему-то адаптировали. Двойные стандарты :) "если на проекте стоят такие потребности, не надо изобретать велосипед - смело надо ставить смарти." - у меня есть потребность забить гвоздь... я знаю что с этой задачей без проблем справится каток (который асфальт закатывает)... Стоит ли мне его использовать для решения задачи, или по-нормальному взять молоток и забить?! Так вот, я не утверждал, что смарти не справляется с задачей... ровно наоборот. Однако, я считаю смарти катком, которым пытаются забивать (закатывать) гвозди. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 22:26 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, ну извините, сами подставляетесь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2015, 08:22 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Програмёрalex564657498765453, Эх... добрался домой... потратил 20 минут, что бы почитать что ты написал, разобраться... С твоими рассуждениями типа "шаблон - это всего ли шаблон, и не надо ему следовать. Если надо - меня под свои нужды" (не цитата... приблизительная передача смысла) я не согласен. Так вот, всегда есть 3 варианта действий: 1. Шаблон подходит - значит его используем при написании кода 2. Шаблон не подходит - взять другой, который теоретически подойдёт и вернуться к пункту 1. 3. Ни один из желаемых не подошёл - не обращать внимания на паттерны и писать как удобно тебе. Так вот, ты говоришь о третьем пункте, как о немного модифицированном первом! Как часто ты пытаешься из ботинок сделать летние босоножки? А вот перепиливание шаблона и его использование вне его области применения - это как-раз попытка ботинки в босоножки превратить. Есть установленные правила, высчитанные и продуманные, и нефига от них уходить! Ушёл от правила - ушёл от шаблона! (прикольный лозунг получился надо бы предложить как девиз шаблонизации) Почему отклонение от ТЗ называют отклонением, а не адаптацией?! представляешь такое? "Уважаемый клиент, мы адаптировали Ваше ТЗ под наш движок. Первая адаптация в подарок. С уважением и заботой Сайтострой" От ТЗ отклонились, а вот шаблон почему-то адаптировали. Двойные стандарты :) "если на проекте стоят такие потребности, не надо изобретать велосипед - смело надо ставить смарти." - у меня есть потребность забить гвоздь... я знаю что с этой задачей без проблем справится каток (который асфальт закатывает)... Стоит ли мне его использовать для решения задачи, или по-нормальному взять молоток и забить?! Так вот, я не утверждал, что смарти не справляется с задачей... ровно наоборот. Однако, я считаю смарти катком, которым пытаются забивать (закатывать) гвозди. отнюдь. ты малёк переиначил мои слова, а потом уже на переиначеной версии делаешь выводы. цитата - Ушёл от правила - ушёл от шаблона! шаблон это не правило!!!. рассмотрим простой пример. сингл-тон. в чистом виде в пхп не применим, ибо надо ещо позакрывать магические методы, которые могут создать объект. хотя всё-равно остаётся возможность создать обьект. мы отошли из ботинок сделали сандали? или просто взяли штаны которые нам подходят, но в талии жмут и малёк расширили... можно посмотреть иначе. называть синглтоном не заготовку кода описания класса, а как саму идею - класс + статичное скрытое поле инстанс, + статический метод возвращающий инстанс, инициализируя его если надо + закрыты для внешнего доступа все методы класса способные создать новый экземпляр класса. пускай. есть познее статическое связывание, благодаря ему, синглтонизм :) можно описать в родителе, но для каждого потомка будет свой учот единственности. отдельного шаблона нету - так что не пользоватся? или сказать - я изобрёл новый шаблон??? нет я не изобрёл, я по аналогии встретив задачу которая похожа - решил похоже=взял за основу имеющееся решение, и модифицировал его так, что б подошло мне. .... вот на это я в эпусе своём и пытался сделать акцент, но согласен плохо. шаблон это не правило, не закон, - шаблон это шаблон. я согласен с тобой, что важно как именно назвали то или инное, ибо в этом скрыт смысл. не зря говорят - оступить от ТЗ, но и не зря говорят шаблон, но никто не назовёт COM - шаблоном, или SOLID REST JSON OOP... wikipedia An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context Архитектурный шаблон целом, многоразовые решение для часто встречающихся проблем в архитектуре программного обеспечения в рамках определенного контекста понимаете, уважаемые (впервые кстате перевёл для себя с английского) многоразовое решение для часто встречающейся проблемы. то есть, есть частая проблема, есть её оптимальное решение - этому решению дали имя, ну смысл давать имя решению, которое каждый 100ый програмист встретит... это как...вот аналогично для водителя - прерывистое торможение. у меня АБС, мне пофигу(может и нет но я этого не понимаю) , при торможении иногда нажимаю педаль не один раз...перед торможением если время есть хочу мигнуть жопашнику(в зад авто пристроился) что счас буду тормозить. есть проехать накатом. "шаблонизация", это как механизация, автоматизация, оптимизация - процесс касающийся практической деятельности, а не теоритической. иначе было бы шаблоника, если бы это была теория построения систем. это практика. взять тотже синглтон, я про него услышал на собеседовании, овтетил что не знаю, на меня посмотрели с видом что дебил, потом пришол домой, нагуглил - и понял, дебил не я...вот сам как думаешь, я за более 15 лет програмирования сталкивался с задачей, когда себе думал...надо добавить контроль единичности обьекта- тупо изза спотыканий что возникала вторая копия и сбой...наверно было.. как думаешь ,да первые решения были глобальные переменные маркеры - создан обьект или нет, но когда пришло понимание пользоватся статикой классов, в результате моё решение не стало таким как сингл тон...стало, я гениальный , раз сам к это пришол? нет. ибо это практика. и для частых задач, распространнёное решение получило своё название. в армии тоже есть шаблоны боевых порядков, тактики итд, но ... тоесть слово шаблон звучит, именно после того, как человек придумал как он это сделает, а не до. вот маленький но принципиальный момент, когда я думаю о не допущении кучи подключений к базе, я думаю про контроль за подключениями(обьектами класса дб-коннекшин), про статическую логику, про то что счас принципе мне надо одно подключение, ибо нет асинхронной работы. статически буду хранить ссылку на обьект, метод для её получения(ссылки) и потом вывод- ну да, синглтон. а не только подумав про слово один обьект, сразу сингл тон, а потом лепить костыли или переделывать, потому что один обьект но не синглтон.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2015, 11:21 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
вместо того, что бы прочитать первые 10 страниц книги по шаблонам (где описано для чего) и решить для себя нужны ли они, решили переливать из пустого в порожнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2015, 12:02 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, что бы огромными простынями не переписываться, буду отвечать по ходу прочтения и осознания. Про singleton - вообще-то в чистом виде реализуем: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. Гарантировал ли я, что в системе будет один единственный экземпляр SingletonTest - да . Основные правила паттерна соблюдены (в данном случае оно одно - единственный экземпляр класса с глобальной точкой доступа) Потому не знаю с чего ты решил, что паттерн не реализуем. Если с каким-то подвыподвертом и можно создать экземпляр класса - то есть намерение конечного программиста отойти от шаблона. Мы ведь не можем Yii винить за отхождение от MVC, если кто-то на нём пишет нарушая правила данного паттерна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2015, 12:09 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, "можно посмотреть иначе. называть синглтоном не заготовку кода описания класса, а как саму идею" - а кто сказал, что шаблон ПРОЕКТИРОВАНИЯ - это заготовка кода?! Вообще-то это идея... на то и шаблон ПРОЕКТИРОВАНИЯ, а не кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2015, 12:12 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, если уж про википедию, читать первую строчку и её же цитировать - плохой тон :) Вот я прочитал ещё 4 строки и нашёл вот такое определение: wiki Patterns are often defined as "strictly described and commonly available".[2][3] For example, the layered architecture is a call-and-return style because it defines an overall style to interact. When it is strictly described and commonly available, it is a pattern. жёстко? )) перевод: Шаблоны часто определяются как "чётко описанные и общедоступные". Например, многослойная(?) архитектура - это вызови-и-верни стиль, потому что определяет общий стиль прерываний. Когда же она чётко описана и общедоступна - это ШАБЛОН . Замечаешь разницу между стилем проектирования и шаблоном проектирования? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2015, 12:24 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
в прошлом сообщении ошибка перевода (букву неверно прочёл... но особо смысл тот же) )) *прерываний = действий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2015, 12:29 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Програмёрalex564657498765453, "можно посмотреть иначе. называть синглтоном не заготовку кода описания класса, а как саму идею" - а кто сказал, что шаблон ПРОЕКТИРОВАНИЯ - это заготовка кода?! Вообще-то это идея... на то и шаблон ПРОЕКТИРОВАНИЯ, а не кода. шаблон проектирования, это в редакторе юмл, где собственно и проектируют(...в уме продумывают, а проектируют всегда на бумаге, или в соответствующем редакторе)!!! как мы с тобой оба знаем, названия понятиям дают не случайные, а осмысленные. так вот проектируют в редакторе... в уме обдумывают. проект - он на бумаге или в документе редактора, в голове - мысли идеи, точки зрения.... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2015, 15:03 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Програмёрalex564657498765453, если уж про википедию, читать первую строчку и её же цитировать - плохой тон :) Вот я прочитал ещё 4 строки и нашёл вот такое определение: wiki Patterns are often defined as "strictly described and commonly available".[2][3] For example, the layered architecture is a call-and-return style because it defines an overall style to interact. When it is strictly described and commonly available, it is a pattern. жёстко? )) перевод: Шаблоны часто определяются как "чётко описанные и общедоступные". Например, многослойная(?) архитектура - это вызови-и-верни стиль, потому что определяет общий стиль прерываний. Когда же она чётко описана и общедоступна - это ШАБЛОН . Замечаешь разницу между стилем проектирования и шаблоном проектирования? :) ага, только вы бы ещо на ссылки смотрели. моё определение на английском(из вики) взято из английской книги извесных авторов на тему проектирования, и книги - теоретической о преэктировании. ваше толкование, взято из тайванской конференции(которая поди ещо и на китайском была, тоесть в журнале перевод на англ.) я что хочу сказать. вот посмотрите на мою речь - безграмотную. верите, что задавшись целью написать книгу, и дать определение слову, я это сделаю досконально, но в режиме чата, конференции, могу ляпнуть не суразицу, ибо не умею очень точно следить за тем что я хотел сказать, а что говорю. этому все люди подвержены, только в разной степени. взять вырезку из конференции - это вырвать из контекста. мы же не знаем, на какой вопрос, был ответ с такой фразой.... врядли это было дома заготовленное определение шаблона:) а вообще да, я согласен с такой разницей между стилем и шаблоном - шаблон, он строго описан. но я в своём эпусе изначально это и подразумевал - АЛЯ шаблон - чёткое описание, в среде проектирования при инжениринге кода шаблона - получим вполне определёный код. итого, длязаданой среды(ИДЕ) и языка программирования, шаблон == коду этого шаблона на этом языке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2015, 15:13 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Програмёр, насчёт синглтона для пхп. раз уж клон закрыл, то надо бы и __wakeup() закрыть. но остаються методы по типу ..._fetch_object они в обход конструктора работают. это просто заметка. и сдесь дело не в том что програмист хочет обмануть. но с тобой согласен, это стандартный код для синглтона. а вот теперь вопрос. один фанат(ик) шаблонов, когда я сказал про мультитон(не помню где но встречал такой термин) для случая, когда в метод инстанс, мы передаём имя, и поле инстанс, это масив. ну нупример - тоже подключение к базе, но у нас подключение к одному серверу баз данных должно быть единственным, но самих серверов несколько. итого надо $obj1 = Database::factory('statdb'); $obj2 = Database::factory('statdb'); $nobj1 = Database::factory('generaldb'); - первые две переменные ведут к одному и томуже обьекту, третья, к другому. и вот когда я гуглил синглтон , гдето встречал мильтитон, но один фанат похихикал... это пример того что я имел ввиду, когда человек к шаблону относится как к науке, всё что не по шаблону лоховство. притом, раз он прочитал целую книгу по шаблонам, то он уверен что он знает все их ... бывают же. но в целом, согласен - мультитон, это не общепринятое слово, следовательно можно считать что нет такого шаблона проектирования, в смысле general. понятное дело что если я в UML рисую проекты, то у меня там куча шаблонов своих - например для класса кукисов, сесионных данных, для работы с курлом и прочего. но это всё моё локально - когда шаблон, вточности равно, файл-заготовка для редактора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2015, 15:28 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, источники не смотрю - виноват :) Да и сейчас влом... верю на слово ) шаблон = код - близко к моему пониманию, но тут я немного поясню (далее по тексту) __wake_up() - согласен _fetch_object - если то, что думаю, тогда не согласен :) знакомый шаблонизаторщик руль вообще Итак, по порядку: 1 . шаблон = код. Если мы говорим про шаблон программирования, безусловно это так. Но в данном случае проектирования. То есть это некая заготовка, но не в виде кода, а в виде структуры этого кода. Другими словами, открывая IDE, я получаю вопрос "какой шаблон проектирования стоит применить к проекту?". Представим я выбрал MVC (самый близкий мне). Следующий шаг - это при нажатии на кнопку применить, передо мной разворачивается некое окно из трёх частей (образно), на левой надпись модели, на средней - контроллеры, на правой - представления. Кликнув на кнопку "создать модель" в левом окне, я получаю нечто похожее на структуру таблицы sql, где мне предлагают указать атрибуты характеризующие данную модель. Когда я всё ввёл и жму "готово", мне предлагают указать связи с другими моделями. По окончанию вопрос: "укажите основные методы управления данными модели и её связями". Тут я указываю конструкторы, валидаторы, апдейтеры, делиторы (уж сори за англорусские слова... "удаляторы" - не звучит). Насоздавав все модели, я вроде как описал некую частичку мира (некий процесс, явление). Теперь мне надо представить его как-то пользователю. Для этого я создаю представление. Меня в том же ключе опрашивают что я хочу выводить, как я это хочу выводить и т.д. По окончанию процесса создания представлений мне предлагают определить наборы данных для вывода в этих представлениях. Под каждый такой набор создаётся контроллер (он то и является подобием связи многие ко многим между моделями и представлениями). Связывая таким образом поля и методы моделей с переменными в представлениях, мы получаем полноценный контроллер. Вот так я и понимаю для себя шаблон проектирования . Если с кодом - это готовый код, то с проектирование - готовая архитектура 2 . ...fetch_object - это из серии типа mysql_fetch_object?! :) Бугага.... Это как-раз косяк в архитектуре. Создавая объект-одиночку, надо делать так, что бы быть уверенным, что этот объект будет сохранять своё состояние от обращения к обращению (вызвав кучу методов других объектов в своём, я не должен после каждого проверять, а не изменилось ли состояние объекта). Отсюда мультитон - синглтон с возможностью настройки и контроля состояний (не знаю как описывают эту архитектуру другие, всего лишь рассказываю как я к ней пришёл, после ознакомления с синглтоном). Так вот, по отношению к базе данных синглтон (ну или уже для нас это мультитон) применяется очень сложно. Для этого требуется отсутствие какой либо возможности управлять соединением напрямую. Мы должны отобрать возможность написания произвольного запроса, получения выборки вне нашего объекта, закрытия соединения и т.д. Среди этого, также требуется запоминать состояние "начата транзакция", активная база данных, состояние сессионных переменных (если есть возможность их изменения). В общем, для того, что бы это сделать, нужно полностью обернуть mysql в апи для php :) Признаться честно, я много раз начинал эту затею, но ещё ни разу не хватило терпения и сил довести её до конца. 3. Шаблонизаторщик... мх :) Нечего сказать... кажись получилось высказаться одним словом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2015, 21:59 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Надо поднять подобную тему и назвать её "Зачем нужен ORM?" Не сомневаюсь, что она будет так же популярна как и эта, с размерами постов "многабукаф-ниасилил". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2015, 23:06 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
NekZНадо поднять подобную тему и назвать её "Зачем нужен ORM?" Не сомневаюсь, что она будет так же популярна как и эта, с размерами постов "многабукаф-ниасилил". Вообще мы начали с разъяснения зачем нужна шаблонизация (в понятии шаблонов вёрстки). Потом по-немного перешли в тему отделения вёрстки => паттерн MVC => суть паттернов проектирования => синглтон => мультитон => мультитон и базы данных =>... Не уверен что имеет смысл заводить новую тему :) Ещё: 2-3 поста и мы будем по полной обсуждать ORM, 10 постов - необходимость использования фреймворков, 30 постов - что ждёт php в будущем 70 постов - windows API в assembler 75 постов - WM_MESSAGES или Qt PORTS/SLOTS (у qt же так вроде работает передача событий) 85 постов - компьютеры раньше и сейчас 200 постов - "программирование и сотворение вселенной. Что общего?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 00:54 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Програмёр70 постов - windows API в assembler а здесь можно что-то обсуждать? хотя -"Где взять файлы, windows.inc user32.inc user32.lib kernel32.lib fpu.lib fpu.inc kernel32.inc ?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 10:00 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
ИзопропилПрограмёр70 постов - windows API в assembler а здесь можно что-то обсуждать? хотя -"Где взять файлы, windows.inc user32.inc user32.lib kernel32.lib fpu.lib fpu.inc kernel32.inc ?" Есть, но мало ) Потому с 70 по 75 пост :) Число - это не количество постов, а номер поста, перешедшего в новую тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 10:07 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Програмёрalex564657498765453, источники не смотрю - виноват :) Да и сейчас влом... верю на слово ) шаблон = код - близко к моему пониманию, но тут я немного поясню (далее по тексту) __wake_up() - согласен _fetch_object - если то, что думаю, тогда не согласен :) знакомый шаблонизаторщик руль вообще Итак, по порядку: 1 . шаблон = код. Если мы говорим про шаблон программирования, безусловно это так. Но в данном случае проектирования. То есть это некая заготовка, но не в виде кода, а в виде структуры этого кода. Другими словами, открывая IDE, я получаю вопрос "какой шаблон проектирования стоит применить к проекту?". Представим я выбрал MVC (самый близкий мне). Следующий шаг - это при нажатии на кнопку применить, передо мной разворачивается некое окно из трёх частей (образно), на левой надпись модели, на средней - контроллеры, на правой - представления. Кликнув на кнопку "создать модель" в левом окне, я получаю нечто похожее на структуру таблицы sql, где мне предлагают указать атрибуты характеризующие данную модель. Когда я всё ввёл и жму "готово", мне предлагают указать связи с другими моделями. По окончанию вопрос: "укажите основные методы управления данными модели и её связями". Тут я указываю конструкторы, валидаторы, апдейтеры, делиторы (уж сори за англорусские слова... "удаляторы" - не звучит). Насоздавав все модели, я вроде как описал некую частичку мира (некий процесс, явление). Теперь мне надо представить его как-то пользователю. Для этого я создаю представление. Меня в том же ключе опрашивают что я хочу выводить, как я это хочу выводить и т.д. По окончанию процесса создания представлений мне предлагают определить наборы данных для вывода в этих представлениях. Под каждый такой набор создаётся контроллер (он то и является подобием связи многие ко многим между моделями и представлениями). Связывая таким образом поля и методы моделей с переменными в представлениях, мы получаем полноценный контроллер. Вот так я и понимаю для себя шаблон проектирования . Если с кодом - это готовый код, то с проектирование - готовая архитектура 2 . ...fetch_object - это из серии типа mysql_fetch_object?! :) Бугага.... Это как-раз косяк в архитектуре. Создавая объект-одиночку, надо делать так, что бы быть уверенным, что этот объект будет сохранять своё состояние от обращения к обращению (вызвав кучу методов других объектов в своём, я не должен после каждого проверять, а не изменилось ли состояние объекта). Отсюда мультитон - синглтон с возможностью настройки и контроля состояний (не знаю как описывают эту архитектуру другие, всего лишь рассказываю как я к ней пришёл, после ознакомления с синглтоном). Так вот, по отношению к базе данных синглтон (ну или уже для нас это мультитон) применяется очень сложно. Для этого требуется отсутствие какой либо возможности управлять соединением напрямую. Мы должны отобрать возможность написания произвольного запроса, получения выборки вне нашего объекта, закрытия соединения и т.д. Среди этого, также требуется запоминать состояние "начата транзакция", активная база данных, состояние сессионных переменных (если есть возможность их изменения). В общем, для того, что бы это сделать, нужно полностью обернуть mysql в апи для php :) Признаться честно, я много раз начинал эту затею, но ещё ни разу не хватило терпения и сил довести её до конца. 3. Шаблонизаторщик... мх :) Нечего сказать... кажись получилось высказаться одним словом согласен. шаблон проектирования для иде, это шаблон структуры для сингл тона это класс Синглтон1 протектид чтатик поле инстанс типа указатель протектид метод конструктор без парамтеров, возвращает войд публичный статичный метод инстанс - возвращает указатель. и в зависимости от среды, возможна добавка относительно кода последнего, но скорей всего нет - просто коментарий, проверить наличие значения у статичной переменой, если нету поместить туда обьект данного класса, вернуть статичное поле. и потом при генерации кода, мы получим файл синглтон1, в нём описан класс, с коментариями ято для чего.(если мы в проекте после применения шаблона не меняли ничего). хех. похоже пришли к согласию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 13:37 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
по заказам турдящихся ORM. Я: - фуфло ваши ORM 1.На предыдущем проекте, были демоны написаны на шеле, ибо пхп долго будет работать(например сканировать рекурсивно директорию, и отбор фалов по критериям и подсчёт мд5 для выбранных - find -type f .... гораздо быстрее, и главное надёжней.) но надо в базу обращаться. хорошо что у меня небыло орм(было подобие, но не полное) часть логики была прямиком в базе на тригерах и хранимках и заданиях. благодаря этому код на шеле правильно в тупую работая с таблицами, работал. 2 да и в целом, при построении систем, а не сайта пусть даже с миллионной посещаемостью, отдельные части могут делаться на различных языках - просто так лучше. а главное - не все компоненты системы делаются с нуля, часть из них берётся готовые решения и у них свои орм или типа того. это что, везде дублировать логику? 3 есть интересные вещи(в мускле нету) - что чтение данных и запись данных может ити в разные таблицы(чтение из представления реально идёт) - это делать две модели.. зачем. 4 а главное, зачем отрывать логику от самих данных. мы почему тащимся от ооп что вместо Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. зачем мы отрываем логику данных от базы. вот что за дебил ваще придумал в моделях валидировать уникальность мыла. типо базе сделать запрос а мыло васяпупкин есть или нету, а потом сделать инсерт, и ввиду уникальности мыла, один чорт проверить уникальность - это легче чем просто вставить запись, и если ошибка, зная имя ключа_уникального для мыла, понять что мыло не уникально? зачем в базу мы передаём хеши для паролей..что за мудизм? вставка пароля - "мой пароль", тригер сам хеширует, используя хранимую функцию - хеш_пароля_юзера при выборке, выборка идёт из представления - где уже нету поля пароль, оно не читаемо. при логине, вызывается хранимая процедура(если сесию логина храним в базе ещо лучше) куда передаёться пароль, база сама=хранимка, пользуясь функцией хранимой хеширующей правильно пароль, сверит , и выдаст либо одного юзера или тру, или ноль юзеров или фолс... зачем наплевали на процедурное расширение языка sql, triggers, events(jobs), procs(functions, procedures) и лепим орм... верх лоховства, отедльным запросом в одной транкзанкции после смена у юзера статуса записывать в таблицу лог о этом изменении. или при удалении категории, потомков удалять в транкзанкции делая запрос отдельный. действительно... пускай лок продлится на 300-400 мс дольше при малой скорости передечи другого запроса в базу. делать сложные запросы которые орм сделать то сделает, но если хочется оптимизировать, начинаются танцы с бубмно, или ORM::byquery('select .....'); ============ Я не говорю что понятие модели надо исключить, я не говорю что ОРМ плохо. я спрашиваю, зачем из базы всю логику перетащили в ОРМ, даже по контролю целостности данных, обновление щётчиков(вставляем юзеру дочерню запись, обновляем счётчик(пре агрегация)) зачем???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 14:00 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, Всё это имело смысл в плане масштабируемости. Ты не знаешь с какой базой работаешь. Авось это sqllite или ещё что проще. Часть функционала отрезана... Есть разные драйвера. Один драйвер может вернуть массив, а другой не может... а третий только массив и может вернуть. Заточив функционал, рассчитывая, что база данных сможет его чем-то своим дополнить - не правильно. Оставить возможность дополнения функционала средствами базы - это да. Но вот полагаться на это не стоит. В системах реализующих ORM модель как-раз пытаются и не полагаться. Таким образом, если драйвер чего-то не умеет, то система сможет сделать это сама, а драйверу отдать результат, который тот обработает. Насчёт ООП, суть не в том :) Суть в повторении модели мира. Есть объект, у него есть атрибуты. Изменение одного атрибута влияет на изменение другого, на вызов некого метода, или отработку события. То есть ООП - это группировка сущностей программы исходя из логики восприятия мира человеком (мы выделяем некий объект "человек" не для того, что бы связать понятия "кушать" и "вес", а для того, что бы выделить один логически обоснованный объект, и последующего выделения его характеристик, методов и т.д.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 16:40 |
|
||
|
Зачем нужна шаблонизация?
|
|||
|---|---|---|---|
|
#18+
Програмёрalex564657498765453, Всё это имело смысл в плане масштабируемости. Ты не знаешь с какой базой работаешь. Авось это sqllite или ещё что проще. Часть функционала отрезана... Есть разные драйвера. Один драйвер может вернуть массив, а другой не может... а третий только массив и может вернуть. Заточив функционал, рассчитывая, что база данных сможет его чем-то своим дополнить - не правильно. Оставить возможность дополнения функционала средствами базы - это да. Но вот полагаться на это не стоит. В системах реализующих ORM модель как-раз пытаются и не полагаться. Таким образом, если драйвер чего-то не умеет, то система сможет сделать это сама, а драйверу отдать результат, который тот обработает. Насчёт ООП, суть не в том :) Суть в повторении модели мира. Есть объект, у него есть атрибуты. Изменение одного атрибута влияет на изменение другого, на вызов некого метода, или отработку события. То есть ООП - это группировка сущностей программы исходя из логики восприятия мира человеком (мы выделяем некий объект "человек" не для того, что бы связать понятия "кушать" и "вес", а для того, что бы выделить один логически обоснованный объект, и последующего выделения его характеристик, методов и т.д.) ну в реале я не встречал - человека любящего ОРМ руками и ногами и умеющего, хотябы инициализировать переменную в селекте - про серьёзную работу с базой, та даже просто скл полностью, молчу. другая сторона дела - не видел проекта который бы хвастался, мы перешли на другую субд. тут видишь ли... ты автомобиль берёшь, а потом надо мощнее , ты двигатель переставляешь или автомобиль меняешь. я пишу систему, например доска обьявлений для интернета. шаблоны верстки через смарти...хочешь бери переиначивай на свой манер. испльзую мускл, который справиться с проектной модностью - пускай милион вставок в течении суток равномерно более менее, и 50 млн чтений. я пользуюсь этим решением, потом оказывается, что мне надо 100млн вставок в день. типо база это единственное место, которое станет узким? нджинкс типо выдержит на одной машине на раз?... тоесть полетит не только база. чегож тогда ОРМщики пытаясь подготовиться к замене базы, не готовятся к замене одного сервера на облако? есть масив, нет массива. - в разных языках програмирования тоже типы различаются... это что, мне надо для жизни джейсон, в си родной поддержи джейсона нету, костыли, всё, буду на пхп екзешники комплилитЬ? средство выбирается исходя из задач перед нашим решением. до создания его смотрим что мы будем с базой делать. если большой гемор без массивов, значит не мускл а постгри берём. если на деревьях шаманить хатим, и датамайнинга кучу наворотить, то ориентируемся на оракал. а иначе это пустая трата времени. сделать проект, вложиться что можно будет поменять субд легко... супер!!! а зачем такая замена??? или в орм есть метамодельный уровень, что то что в одной субд будет списком , в другой будет кольцом, или граф будет таблицей, или таблица ввиде графа(реляционная ... сетевая модель данных) , или проще - в постгри есть джейсонби в мускле нету, для мускла связаная таблица - связаная таблица, для постгри это будет джейсон обьект. сможет ОРМ , тот же доктрина сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 16:53 |
|
||
|
|

start [/forum/topic.php?all=1&fid=23&tid=1461993]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
157ms |
get tp. blocked users: |
2ms |
| others: | 268ms |
| total: | 534ms |

| 0 / 0 |
