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.SU

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


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

> Без описания
imedia
Отправлено: 20 Сентября, 2017 - 23:33:53
Post Id



Частый гость


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


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




Вот есть строка - шаблон и есть переменные которые нужно подставить вместо названий в шаблоне между фигурными скобками
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.  

(Отредактировано автором: 20 Сентября, 2017 - 23:43:31)

 
 Top
Строитель Модератор
Отправлено: 20 Сентября, 2017 - 23:51:04
Post Id



Участник


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


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




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. */
 
 Top
Строитель Модератор
Отправлено: 22 Сентября, 2017 - 00:38:47
Post Id



Участник


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


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




imedia, ещё один пример:
Спойлер (Отобразить)
Но лучше наверное использовать уже готовые шаблонизаторы.
 
 Top
Vladimir Kheifets
Отправлено: 22 Сентября, 2017 - 17:07:37
Post Id



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


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 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>

(Отредактировано автором: 22 Сентября, 2017 - 17:13:56)

 
 Top
Строитель Модератор
Отправлено: 22 Сентября, 2017 - 17:52:10
Post Id



Участник


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


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




Vladimir Kheifets доброго времени ) Ошибки в html-шаблоне есть, но это здесь не существенно, т.к. шаблон используется только для демонстрации переменных.
 
 Top
Vladimir Kheifets
Отправлено: 23 Сентября, 2017 - 11:01:00
Post Id



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


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


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




Строитель пишет:
Vladimir Kheifets доброго времени ) Ошибки в html-шаблоне есть, но это здесь не существенно, т.к. шаблон используется только для демонстрации переменных.

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

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



Участник


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


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




Vladimir Kheifets пишет:
Хороших выходных!
Спасибо, взаимно! )
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB