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
Форумы портала PHP.SU :: Версия для печати :: Подскажите как сделать примитивный шаблонизатор
Форумы портала PHP.SU » » Вопросы новичков » Подскажите как сделать примитивный шаблонизатор

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

1. imedia - 20 Сентября, 2017 - 23:33:53 - перейти к сообщению
Вот есть строка - шаблон и есть переменные которые нужно подставить вместо названий в шаблоне между фигурными скобками
PHP:
скопировать код в буфер обмена
  1.  
  2. public $array=[
  3. ['sts']=>'Standford',
  4. ['dvd']=>'Video',
  5. ['title']=>'My_title'
  6. ];
  7. public $message="<!DOCTYPE html>
  8. <html lang='en'>
  9. <head>
  10.    <meta charset='UTF-8'>
  11.    <title>{title}</title>
  12.    <div class='message' style='color:#6b0392;'>
  13.        {sts}
  14. </div>
  15. <div class='footer' style='color:#6b0392;'>
  16.        {dvd}
  17. </div>
  18. </head>
  19. <body>
  20.  
  21. </body>
  22. </html>";
  23.  
  24.  


По сути надо составить вот такой масив $matches чтобы потом можно было приминить к нему функцию указанную ниже
PHP:
скопировать код в буфер обмена
  1.  
  2. $matches = array (
  3. "{переменная}" => "значение",
  4. );
  5. //function
  6. $result = str_replace (array_keys($matches), array_values($matches), $message);
  7.  
2. Строитель - 20 Сентября, 2017 - 23:51:04 - перейти к сообщению
imedia пишет:
По сути надо составить вот такой масив
PHP:
скопировать код в буфер обмена
  1. $array = [
  2.     'sts' => 'Standford',
  3.     'dvd' => 'Video',
  4.     'title' => 'My_title'
  5. ];
  6.  
  7. extract($array);
  8.  
  9. echo '<pre>'; var_dump($sts, $dvd, $title); echo '</pre>';
  10. /*
  11. string(9) "Standford"
  12. string(5) "Video"
  13. string(8) "My_title"
  14. */
3. Строитель - 22 Сентября, 2017 - 00:38:47 - перейти к сообщению
imedia, ещё один пример:
Спойлер (Отобразить)
Но лучше наверное использовать уже готовые шаблонизаторы.
4. Vladimir Kheifets - 22 Сентября, 2017 - 17:07:37 - перейти к сообщению
Строитель пишет:
imedia, ещё один пример:
Спойлер (Отобразить)
Но лучше наверное использовать уже готовые шаблонизаторы.

Добрый день!
1. В этом примере, строки:
CODE (html):
скопировать код в буфер обмена
  1. <div class='message' style='color:#6b0392;'>
  2.            {sts}
  3.        </div>
  4.        <div class='footer' style='color:#6b0392;'>
  5.            {dvd}
  6.  </div>

должны быть после: <body> , а не между <head></head>

2. Лучше не использовать атрибут style в тэгах, а использовать только атрибут class
В данном случае я бы определил класс, например, xxx
CODE (html):
скопировать код в буфер обмена
  1. .xxx{color:#6b0392 !important}

и так изменил код:
CODE (html):
скопировать код в буфер обмена
  1. <div class='message xxx' >
  2.            {sts}
  3.        </div>
  4.        <div class='footer xxx' >
  5.            {dvd}
  6. </div>
5. Строитель - 22 Сентября, 2017 - 17:52:10 - перейти к сообщению
Vladimir Kheifets доброго времени ) Ошибки в html-шаблоне есть, но это здесь не существенно, т.к. шаблон используется только для демонстрации переменных.
6. Vladimir Kheifets - 23 Сентября, 2017 - 11:01:00 - перейти к сообщению
Строитель пишет:
Vladimir Kheifets доброго времени ) Ошибки в html-шаблоне есть, но это здесь не существенно, т.к. шаблон используется только для демонстрации переменных.

Доброе утро!
Ошибка в html-шаблоне не принципиальная.
Принципиальный вопрос о использование атрибута style в HTML- тэгах .
Это "не ошибка" встречается часто в примерах на форуме.
Не обращал на это внимание, до тех пока не потребовалась переработать PC-версию сайта на версию для мобильных устройств.
Причём задача состояла в том, чтобы один и тот же код работал во всех версиях,
а внешний вид сайт полностью описывался в CSS с медиа-запросами.
Пришлось долго "выковыривать" из тэгов атрибы style, определять классы и переносить их в CSS.

Пример попроще - клиент смотрит сайт и просит где-то изменить цвет или размер шрифта.
Причём бывает, лет через пять после окончания разработки.
Искать style-"заплатки" в кодах очень утомительно...
Хороших выходных!
7. Строитель - 23 Сентября, 2017 - 20:53:06 - перейти к сообщению
Vladimir Kheifets пишет:
Хороших выходных!
Спасибо, взаимно! )

 

Powered by ExBB FM 1.0 RC1