Как присвоить динамичекое содержание переменной ?

Статус
В этой теме нельзя размещать новые ответы.

MaximL

Новичок
Как присвоить динамичекое содержание переменной ?

Есть простенький шаблон типа:
<html>
.........
<h2>$content</h2>
.........
</html>

В котором переменная часть вводится "переменной" $content. Обычно это делаю через вызов модулей php в которых этой переменной присваивается необходимое значение так:

<?php
$content=<<<EOF
...тут необходимый HTML код
EOF;
?>

Однако этод метод нормально работает, если "необходимый HTML код" статичен. Однако возникла потребность и его формировать динамически. Например некой
функцией content(). Подстановка такой функции межу EOF типа:

$content=<<<EOF
content(par);
EOF;

не катит поскольку content(par); воспринимается просто как текст.
Пробовал сделать так:

$content= content(par);

но такой вариант тоже не работает.

Может кто присоветует несложное решение ?
 

HraKK

Мудак
Команда форума
Несложно решение не использовать хередок + читать ман.
 

MaximL

Новичок
Автор оригинала: HraKK
Несложно решение не использовать хередок + читать ман.
Благодарю за полученные ответы. Я хоть узнал, что <<< это heredoc и это один из способов выделения
константы. А теперь опять по теме моего вопроса. Мне не хотелось бы уходить от шаблона с переменными.
А посему надо каким-то образом "запихнуть" сгенерированный функцией content(par) НТМL код в
переменную $content. Лобовое: $content= content(par); не годится.
Тогда как лучше ?
 

x-yuri

Новичок
Благодарю за полученные ответы. Я хоть узнал, что <<< это heredoc и это один из способов выделения
константы.
это один из способов задания значения строкового типа в тексте сценария (способов задания строкового литерала)

А посему надо каким-то образом "запихнуть" сгенерированный функцией content(par) НТМL код в
переменную $content. Лобовое: $content= content(par); не годится.
Тогда как лучше ?
тебе уже ответили: поставь error_reporting = E_ALL и включи display_errors = On (локально) или смотри журнал ошибок (на реальном сервере)
 

Angerslave

Новичок
Ээээммм... Самое тупое решение - просто склеивать строки ($content .= "data";), решение чуть сложнее - ob_get_contents();

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

Фанат

oncle terrible
Команда форума
modobaks
хередок плох тем, что он тупо содран с перла, который не умел встраиваться в хтмл.
а пхп - умеет.

я рекомендую тебе вместо echo $content;
писать в основном шаблоне include $content;
имя шаблона модуля задает модуль, и данные для его отображения задает тоже он.

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

MaximL

Новичок
Автор оригинала: Angerslave
Ээээммм... Самое тупое решение - просто склеивать строки ($content .= "data";), решение чуть сложнее - ob_get_contents();

Лучше посмотреть как это сделано в популярных щаблонизаторах.
Особый респект хочу выразить Angerslave !!!!
Его совет по ob_get_contents(); просто попал в десятку! (Правда про $content .= "data"; я не вьехал).

Кроме того его общий совет про "популярных щаблонизаторах" также оказался весьма интересным и
я уже начал смотреть эту тему шире (про шаблонизаторы).


Таким образом можно считать эту тему закрытой.

Еще раз большое спасибо.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху