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 код?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: какие методы вы знаете?
Rooner
Отправлено: 23 Ноября, 2010 - 15:42:52
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




Разделение кода нужно для удобства работы как верстальщику так и программисту. Какие есть методы разделения кода? Конечно можно все данные формировать в массивы и передавать их "выводящим" функциям, но наверняка есть что-то эффективнее. Ссылки на примеры, материалы, очень приветствуются!
 
 Top
AdMeen
Отправлено: 23 Ноября, 2010 - 15:59:43
Post Id



Посетитель


Покинул форум
Сообщений всего: 370
Дата рег-ции: Сент. 2009  
Откуда: Воронеж


Помог: 1 раз(а)




Rooner пишет:
Разделение кода нужно для удобства работы как верстальщику так и программисту. Какие есть методы разделения кода? Конечно можно все данные формировать в массивы и передавать их "выводящим" функциям, но наверняка есть что-то эффективнее. Ссылки на примеры, материалы, очень приветствуются!


Совсем некорректно поставлен вопрос. Непонятно нужно ли вас в целом познакомить с MVC, или же вам нужны какие-то конкретные наработки
 
 Top
TAMERLAN
Отправлено: 23 Ноября, 2010 - 18:03:31
Post Id



Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Май 2010  
Откуда: Украина, Ровно


Помог: 0 раз(а)




Самый простой пример это создать два файла index.php и main.html.
В main.html записываем произвольные строки с тегами и шаблонами, например:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <center>{CAPTION}</center>
  3.  


хехе, самое простое что может быть... потом, нужно в index.php открыть хтмл-файл, считать его в переменную, потом с помощью функции php заменить нужные шаблоны на образцы текста... примерно так:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. //открывающая скобка, нужна, для шаблонизации
  4. $open_tag = '{';
  5. //соответсвенно закрывающая скобка
  6. $close_tag = '}';
  7.  
  8. $file = fopen('main.html','r');
  9. $text = fread($file, filesize('main.html'));
  10. $fclose($file); //работа с файлом закончена
  11.  
  12. $new_text = str_replace($open_tag."CAPTION".$close_tag,"Привет, шаблонизация прошла успешно!",$text);
  13.  
  14. echo $new_text;
  15. ?>
  16.  


пример взят с одного сайта, адрес не помню. но принцип шаблонизации раскрывается почти полностью... соответсвенно для проффесиональной разработки есть готовые шаблонизаторы, но ничего не мешает написать свой класс/шаблонизатор для своего сайта..


-----
Запутанный вопрос - запутанный ответ))
 
 Top
Rooner
Отправлено: 23 Ноября, 2010 - 19:03:25
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




AdMeen почитаю про MVC, спасибо за наводку.
TAMERLAN спасибо за предложенный вариант, попробую.

Пробовал использовать шаблонизатор Smarty, но так и не дошло чем он отличается от простого инклуда php.
 
 Top
JustUserR
Отправлено: 23 Ноября, 2010 - 19:57:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Rooner пишет:
Какие есть методы разделения кода?
В качестве обобщенного метода обеспечивающего разделение исходного кода на сегменты логической части и реализацию внешнего пользовательского интерфейсап - возможно рассмотрение систем шаблонизации - техническая реализация которых может быть различной и в частности включать в себя обработку заданных виртуальных web-путей и ресурсом посредством активации системы alias-инга и действенного перенаправления на заданном виртуальном хосте


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Rooner
Отправлено: 23 Ноября, 2010 - 20:46:44
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




JustUserR пишет:
В качестве обобщенного метода обеспечивающего разделение исходного кода на сегменты логической части и реализацию внешнего пользовательского интерфейсап - возможно рассмотрение систем шаблонизации - техническая реализация которых может быть различной и в частности включать в себя обработку заданных виртуальных web-путей и ресурсом посредством активации системы alias-инга и действенного перенаправления на заданном виртуальном хосте


Креативно ушел от ответа Радость
 
 Top
TAMERLAN
Отправлено: 24 Ноября, 2010 - 09:20:35
Post Id



Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Май 2010  
Откуда: Украина, Ровно


Помог: 0 раз(а)




Тот вариант что я попробовал расчитан на один шаблон, но в нейтральном варианте можно всё сделать, например как я сделал, через массивы с ключами - где ключ это имя шаблона, а значение это сам текст который нужно подставить, но такой шаблонизатор ещё нуждается в линковщике, который будет брать блоки, например хедер, боди и футер, и их собирать вместе для вывода одной страницы, можно даже через конкатенацию, или через общий массив... но это так сказать ручной метод, сделан для понимания самой шаблонизации и ИМХО возможно лучше использовать готовые системы предназначенные именно для шаблонизации, и возможно даже для компиляции, т.е. общая переменная с готовым текстом не только не выводится, она записывается в файл, а потом отсылается клиенту...


-----
Запутанный вопрос - запутанный ответ))
 
 Top
JustUserR
Отправлено: 24 Ноября, 2010 - 17:11:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Rooner пишет:
Креативно ушел от ответа
Приведенная в предыдущем сообщение схемы влючает обобщенное описание системы шаблонизации использование которой может быть целесообразно для обеспечения разделения логический части и визуального представления - в качестве возможных базовых модификаций возможны две обобщенные схемы решения - в первом случае в качестве компонентов web-стороны используются разделенные именованные логические компоненты для каждого из которых производится последующее подключение шаблона - а во втором случае в качестве разделяемых элементов применяются отдельные описания логических структур на специальном языке разметки


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
YmOn
Отправлено: 25 Ноября, 2010 - 05:02:19
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Использую лишь собственую простенькую систему шаблонов
Вот Классик Закатив глазки


PHP:
скопировать код в буфер обмена
  1.  
  2. class Template {
  3.  
  4.         var $Tags_Contents;
  5.        
  6.         function Template($Open_Tag = '%', $Close_Tag = '%')
  7.         {
  8.                 if(defined("USING_YMON_TEMPLATES"))unset($this);
  9.                
  10.                 DEFINE('OPEN_TAG', $Open_Tag);
  11.                 DEFINE('CLOSE_TAG', $Close_Tag);
  12.                
  13.                 DEFINE('USING_YMON_TEMPLATES', 'TRUE');
  14.                
  15.                 $Date = GetDate();
  16.                 $this->Tags_Contents = array('YEAR' => $Date['year']);
  17.                
  18.                 return TRUE;
  19.         }
  20.        
  21.         function Create_Var($Var_Name, $Var_Content = '')
  22.         {
  23.                 if(!isset($this->Tags_Contents[$Var_Name]))
  24.                 {
  25.                         $this->Tags_Contents[$Var_Name] = $Var_Content;
  26.                         return TRUE;
  27.                 }
  28.                 exit("\$Var_Name Already Created, Use Add_To_Var()");
  29.         }
  30.        
  31.         function Add_To_Var($Var_Name, $Var_Content)
  32.         {
  33.                 if(isset($this->Tags_Contents[$Var_Name]))
  34.                 {
  35.                         $this->Tags_Contents[$Var_Name] = $Var_Content;
  36.                         return TRUE;
  37.                 }
  38.                 exit("\$Var_Name Don't Found");
  39.         }
  40.        
  41.         function Delete_Var($Var_Name)
  42.         {
  43.                 if(isset($this->Tags_Contents[$Var_Name]))
  44.                 {
  45.                         unset($this->Tags_Contents[$Var_Name]);
  46.                         return TRUE;
  47.                 }
  48.                 exit("\$Var_Name Don't Found");
  49.         }
  50.        
  51.         function Add_Vars_Array($Vars_Array)
  52.         {
  53.                 if(isset($Vars_Array))
  54.                 {
  55.                         foreach($Vars_Array as $Var_Name => $Var_Content)
  56.                         {
  57.                                 $this->Tags_Contents[$Var_Name] = $Var_Content;
  58.                         }
  59.                         return TRUE;
  60.                 }
  61.                 exit("\$Vars_Array Is Empty");
  62.         }
  63.        
  64.         function Print_HTML($Blank_Name)
  65.         {
  66.                 $File = fopen($Blank_Name,"r");
  67.                 $Blank_Content = fread($File, filesize($Blank_Name));
  68.                 fclose($File);
  69.  
  70.                 foreach($this->Tags_Contents as $Var => $Content)
  71.                 {
  72.                         $Blank_Content = str_replace(
  73.                                                                                         OPEN_TAG. $Var .CLOSE_TAG,
  74.                                                                                         $Content,
  75.                                                                                         $Blank_Content
  76.                                                                                 );
  77.                 }
  78.                  
  79.                 echo $Blank_Content;
  80.                 return TRUE;
  81.         }
  82. }
  83.  


По мне так, очень удобен
Пример:


PHP:
скопировать код в буфер обмена
  1.  
  2. $Blank = new Template();
  3.  
  4. $Blank -> Create_Var('OUT_PUT', 'Содержимое ключа OUT_PUT');
  5. $Blank -> Create_Var('TITLE', 'Тайтл');
  6. $Blank -> Create_Var('MAIN_HEADER');
  7.  
  8. $Blank -> Add_To_Var('MAIN_HEADER','Текст хедера');
  9.  
  10.  
  11. $Date = GetDate();
  12. $Blank -> Add_Vars_Array($Date);
  13. //Берём дату и сразу массивом делаем из неё ключи, далее просто используем разные mon, year, weekday ключи в шаблоне
  14. $Blank -> Print_HTML('blank.html');
 
 Top
eai
Отправлено: 25 Ноября, 2010 - 13:39:56
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


Помог: 10 раз(а)




Да вариантов куча.
Лично я предпочитаю систему в у которой HTML код динамический генерируется специальной надстройкой на PHP
 
 Top
Nikolai
Отправлено: 25 Ноября, 2010 - 18:49:57
Post Id



Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2010  
Откуда: Беларусь=>Гродно


Помог: 0 раз(а)




придумывать свой велосипед - это круто. А нужно ли. Вот очень простая и гибкая система шаблонов - Smarty. Сам давно использую.
http://www[dot]smarty[dot]net/docsv2/ru/
 
 Top
OrmaJever Модератор
Отправлено: 25 Ноября, 2010 - 20:39:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Nikolai пишет:
придумывать свой велосипед - это круто. А нужно ли

Во многих случаях нужно!
1) В чём то готовом что лежит в паблике Всегда есть уязвимости которые так же лежат в паблике.
2) Если нужно что либо изменить в написаном не тобой это большая проблема.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
ALEN
Отправлено: 25 Ноября, 2010 - 20:51:41
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




Если не планируется использовать кэширование данных, то лучше обходиться без шаблонизатора, а просто грамотно писать код, убивать перед выводом лишние переменные и массивы и через инклуд подключать свои шаблоны с минимумом пхп.

Сам шаблонизатор по большей части сделан для кэширования, т.к. там все подведено и цепляется одно за другое + с помощью него можно ограничить подачу данных в шаблон. Например на инклудах вы сможете в шаблон вывести например пароль от подключения к бд, а вот шаблонизатор убивает такую возможность, т.к. в шаблон нужно отправить этот пароль. Когда много кто работает над сайтом и есть много верстальщиков (особенно тех кто захочет узнать пароль от БД) - шаблонизатор не даст такой возможности.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB