Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Каклучше разделять php и html код?
Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010
Помог: 0 раз(а)
Разделение кода нужно для удобства работы как верстальщику так и программисту. Какие есть методы разделения кода? Конечно можно все данные формировать в массивы и передавать их "выводящим" функциям, но наверняка есть что-то эффективнее. Ссылки на примеры, материалы, очень приветствуются!
AdMeen
Отправлено: 23 Ноября, 2010 - 15:59:43
Посетитель
Покинул форум
Сообщений всего: 370
Дата рег-ции: Сент. 2009 Откуда: Воронеж
Помог: 1 раз(а)
Rooner пишет:
Разделение кода нужно для удобства работы как верстальщику так и программисту. Какие есть методы разделения кода? Конечно можно все данные формировать в массивы и передавать их "выводящим" функциям, но наверняка есть что-то эффективнее. Ссылки на примеры, материалы, очень приветствуются!
Совсем некорректно поставлен вопрос. Непонятно нужно ли вас в целом познакомить с MVC, или же вам нужны какие-то конкретные наработки
TAMERLAN
Отправлено: 23 Ноября, 2010 - 18:03:31
Новичок
Покинул форум
Сообщений всего: 18
Дата рег-ции: Май 2010 Откуда: Украина, Ровно
Помог: 0 раз(а)
Самый простой пример это создать два файла index.php и main.html.
В main.html записываем произвольные строки с тегами и шаблонами, например:
$new_text=str_replace($open_tag."CAPTION".$close_tag,"Привет, шаблонизация прошла успешно!",$text);
echo$new_text;
?>
пример взят с одного сайта, адрес не помню. но принцип шаблонизации раскрывается почти полностью... соответсвенно для проффесиональной разработки есть готовые шаблонизаторы, но ничего не мешает написать свой класс/шаблонизатор для своего сайта..
----- Запутанный вопрос - запутанный ответ))
Rooner
Отправлено: 23 Ноября, 2010 - 19:03:25
Посетитель
Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010
Помог: 0 раз(а)
AdMeen почитаю про MVC, спасибо за наводку.
TAMERLAN спасибо за предложенный вариант, попробую.
Пробовал использовать шаблонизатор Smarty, но так и не дошло чем он отличается от простого инклуда php.
JustUserR
Отправлено: 23 Ноября, 2010 - 19:57:46
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Rooner пишет:
Какие есть методы разделения кода?
В качестве обобщенного метода обеспечивающего разделение исходного кода на сегменты логической части и реализацию внешнего пользовательского интерфейсап - возможно рассмотрение систем шаблонизации - техническая реализация которых может быть различной и в частности включать в себя обработку заданных виртуальных web-путей и ресурсом посредством активации системы alias-инга и действенного перенаправления на заданном виртуальном хосте
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Rooner
Отправлено: 23 Ноября, 2010 - 20:46:44
Посетитель
Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010
Помог: 0 раз(а)
JustUserR пишет:
В качестве обобщенного метода обеспечивающего разделение исходного кода на сегменты логической части и реализацию внешнего пользовательского интерфейсап - возможно рассмотрение систем шаблонизации - техническая реализация которых может быть различной и в частности включать в себя обработку заданных виртуальных web-путей и ресурсом посредством активации системы alias-инга и действенного перенаправления на заданном виртуальном хосте
Креативно ушел от ответа
TAMERLAN
Отправлено: 24 Ноября, 2010 - 09:20:35
Новичок
Покинул форум
Сообщений всего: 18
Дата рег-ции: Май 2010 Откуда: Украина, Ровно
Помог: 0 раз(а)
Тот вариант что я попробовал расчитан на один шаблон, но в нейтральном варианте можно всё сделать, например как я сделал, через массивы с ключами - где ключ это имя шаблона, а значение это сам текст который нужно подставить, но такой шаблонизатор ещё нуждается в линковщике, который будет брать блоки, например хедер, боди и футер, и их собирать вместе для вывода одной страницы, можно даже через конкатенацию, или через общий массив... но это так сказать ручной метод, сделан для понимания самой шаблонизации и ИМХО возможно лучше использовать готовые системы предназначенные именно для шаблонизации, и возможно даже для компиляции, т.е. общая переменная с готовым текстом не только не выводится, она записывается в файл, а потом отсылается клиенту...
----- Запутанный вопрос - запутанный ответ))
JustUserR
Отправлено: 24 Ноября, 2010 - 17:11:04
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Rooner пишет:
Креативно ушел от ответа
Приведенная в предыдущем сообщение схемы влючает обобщенное описание системы шаблонизации использование которой может быть целесообразно для обеспечения разделения логический части и визуального представления - в качестве возможных базовых модификаций возможны две обобщенные схемы решения - в первом случае в качестве компонентов web-стороны используются разделенные именованные логические компоненты для каждого из которых производится последующее подключение шаблона - а во втором случае в качестве разделяемых элементов применяются отдельные описания логических структур на специальном языке разметки
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
YmOn
Отправлено: 25 Ноября, 2010 - 05:02:19
Новичок
Покинул форум
Сообщений всего: 12
Дата рег-ции: Нояб. 2010
Помог: 0 раз(а)
Использую лишь собственую простенькую систему шаблонов
Вот Классик
//Берём дату и сразу массивом делаем из неё ключи, далее просто используем разные mon, year, weekday ключи в шаблоне
$Blank->Print_HTML('blank.html');
eai
Отправлено: 25 Ноября, 2010 - 13:39:56
Частый посетитель
Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009 Откуда: Петроград
Помог: 10 раз(а)
Да вариантов куча.
Лично я предпочитаю систему в у которой HTML код динамический генерируется специальной надстройкой на PHP
Nikolai
Отправлено: 25 Ноября, 2010 - 18:49:57
Новичок
Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2010 Откуда: Беларусь=>Гродно
Помог: 0 раз(а)
придумывать свой велосипед - это круто. А нужно ли. Вот очень простая и гибкая система шаблонов - Smarty. Сам давно использую. http://www[dot]smarty[dot]net/docsv2/ru/
OrmaJever
Отправлено: 25 Ноября, 2010 - 20:39:22
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
Nikolai пишет:
придумывать свой велосипед - это круто. А нужно ли
Во многих случаях нужно!
1) В чём то готовом что лежит в паблике Всегда есть уязвимости которые так же лежат в паблике.
2) Если нужно что либо изменить в написаном не тобой это большая проблема.
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
ALEN
Отправлено: 25 Ноября, 2010 - 20:51:41
Участник
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
Помог: 11 раз(а)
Если не планируется использовать кэширование данных, то лучше обходиться без шаблонизатора, а просто грамотно писать код, убивать перед выводом лишние переменные и массивы и через инклуд подключать свои шаблоны с минимумом пхп.
Сам шаблонизатор по большей части сделан для кэширования, т.к. там все подведено и цепляется одно за другое + с помощью него можно ограничить подачу данных в шаблон. Например на инклудах вы сможете в шаблон вывести например пароль от подключения к бд, а вот шаблонизатор убивает такую возможность, т.к. в шаблон нужно отправить этот пароль. Когда много кто работает над сайтом и есть много верстальщиков (особенно тех кто захочет узнать пароль от БД) - шаблонизатор не даст такой возможности.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.