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 » » CMS и фреймворки » Простой шаблонизатор своими руками

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

1. dmaw - 13 Сентября, 2013 - 13:07:02 - перейти к сообщению
Хочу написать простейший шаблонизатор, столкнулся с проблемой вставки своей функции в str_replace, пример кода:

PHP:
скопировать код в буфер обмена
  1. function posts()
  2. {
  3.     echo 'Тут некий контент полученный из БД';
  4. }
  5. $html = '<body>{content}</body>';
  6. $result = str_replace('{content}', posts(), $html);
  7. echo $result;


По сути результат толжен вывестить в 7-ой строке скрипта, но реально выводится в 6-ой строке, а затем строка 7 просто <body></body>

Пробовал внутри функции вместо echo использовать return, тогда вовсе ничего не происходит, на странице выводится <body></body>

Помогите, пожалуйста, найти решение.
2. IllusionMH - 13 Сентября, 2013 - 13:11:17 - перейти к сообщению
dmaw, что такое posts()?

И зачем весь этот велосипед. Если можно <?=content;?> ?
3. dmaw - 13 Сентября, 2013 - 13:12:27 - перейти к сообщению
IllusionMH пишет:
dmaw, что такое posts()?

Прошу прощения, написал неверно, поправил своё сообщение.
4. IllusionMH - 13 Сентября, 2013 - 13:17:56 - перейти к сообщению
dmaw, return же!
5. Мелкий - 13 Сентября, 2013 - 13:19:18 - перейти к сообщению
dmaw пишет:
использовать return, тогда вовсе ничего не происходит

Неправда (либо каким-то странным образом пробуете).
PHP:
скопировать код в буфер обмена
  1. function posts() {
  2.     return 'какая-то строка';
  3.     }
6. dmaw - 13 Сентября, 2013 - 13:42:54 - перейти к сообщению
Мелкий, Вы правы, функция была реализована примерно вот так:

PHP:
скопировать код в буфер обмена
  1. function posts()
  2. {
  3.     //тут некий код
  4.  
  5.     include('posts.php');
  6. }

В файле posts.php код:
PHP:
скопировать код в буфер обмена
  1. return 'Тут некий контент полученный из БД';


Из-за include и не работало.

Всем спасибо)
7. esterio - 13 Сентября, 2013 - 14:20:23 - перейти к сообщению
include тоже может возвращать данные

PHP:
скопировать код в буфер обмена
  1.  function posts()
  2.     {
  3.         //тут некий код
  4.      
  5.         return include('posts.php');
  6.     }


posts.php
PHP:
скопировать код в буфер обмена
  1.     return 'Тут некий контент полученный из БД';
8. kokandrey - 07 Ноября, 2013 - 14:34:13 - перейти к сообщению
если инклюдите, то не забывайте, что файл вставляется как HTML код, а не как PHP.
9. esterio - 07 Ноября, 2013 - 15:29:58 - перейти к сообщению
kokandrey пишет:
если инклюдите, то не забывайте, что файл вставляется как HTML код, а не как PHP.

include.php

Что будет?

Ну и на дату посмотрите
10. DelphinPRO - 07 Ноября, 2013 - 17:47:56 - перейти к сообщению
kokandrey пишет:
если инклюдите, то не забывайте, что файл вставляется как HTML код, а не как PHP.

Вот же ж блин! а у меня по не знанию весь шаблонизатор построен на инклудах с php вставками. Как он работает — хз.

 

Powered by ExBB FM 1.0 RC1