Я использую (или, по крайней мере, привязываю) функцию PHP HEREDOC в качестве механизма шаблонов. Я реализовал внешнюю строку вызывающего абонента, которая может напрямую обрабатывать внешние функции в HEREDOC, и это работает успешно.Weird HEREDOC output order
Проблема, с которой я столкнулся сейчас, состоит в том, что порядок определенных функций кажется приоритетным и выполняется первым, независимо от других функций и/или кода внутри конкретного HEREDOC.
Как это исправить?
(Пожалуйста, обратите внимание, что я начинающий PHP Я сделал свою домашнюю работу, но не смог найти решение Спасибо...)
ФУНКЦИЯ PROCESOR:
function heredoc($input)
{
return $input;
}
$heredoc = "heredoc";
Heredoc ШАБЛОН:
function splicemaster_return_full_page()
{
global $heredoc;
$title ="This is document title";
echo <<<HEREDOC
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
{$heredoc(splice_html_title($title))}
</head>
<body>
{$heredoc(splicemaster_return_message())}
{$heredoc(splice_quick_add_article_form())}
{$heredoc(display_all_articles_in_a_html_table())}
</body>
</html>
HEREDOC;
}
вопрос под рукой с "{$ Heredoc (display_all_articles_in_a_html_table())} ", который выводится перед всем остальным, что приводит к сломанному HTML.
Любая помощь была оценена, я довольно долго стучу головой об этом.
UPDATE:
используя материал размещен в комментариях я пытался сделать что-то другое, но это некрасиво, как ад, и я хотел бы иметь проблемы редактирования этого на более поздний срок.
function testout()
{
$title = "This is document title";
echo "<!DOCTYPE html>";
echo '<html lang="en">';
echo "<head>";
echo '<meta charset="utf-8">';
echo "<title>". $title . "</title>";
echo "</head>";
echo "<body>";
echo splicemaster_return_message();
echo splice_quick_add_article_form();
echo display_all_articles_in_a_html_table();
echo "</body>";
echo "</html>";
}
(Как это выглядит не важно - у меня есть функция HTML процессор.)
UPDATE 2
ОК, так что я нашел "грязную" исправить, Тхо это не объясняет почему двигатель работает так, как он. (Я также тестировал на другой машине, с diff. Php):
function splicemaster_return_full_page()
{
global $heredoc;
$title ="This is document title";
echo <<<HEREDOC
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
{$heredoc(splice_html_title($title))}
</head>
<body>
{$heredoc(splicemaster_return_message())}
{$heredoc(splice_quick_add_article_form())}
HEREDOC;
echo <<<HEREDOC
{$heredoc(display_all_articles_in_a_html_table())}
</body>
</html>
HEREDOC;
}
Я бы предложил не использовать HEREDOC для шаблонирования целых страниц, чтобы быть честным .. использовать OB и загружать шаблоны ...если честно, почему бы не взглянуть на использование рамки для вашего программирования, поскольку все эти проблемы будут уже решены. –
Спасибо за повтор; Что такое «OB»? Кроме того, рамки не мои вещи, по крайней мере, не для этого проекта. (И да, вы можете вызывать функции в HEREDOC, вам просто нужно «переименовать» функции a a a a string.) – mrmut