PHP внутри PHP? - PullRequest
       14

PHP внутри PHP?

1 голос
/ 11 января 2012

Извините, если это звучит глупо!Я использую PHP для создания определенных разделов моего сайта, таких как заголовок, а затем отображаю их на каждой странице.Проблема в том, что я хочу поместить некоторый PHP-код в этот раздел:Выдает ошибки, но начинается со строки if(isset($_SESSION['user'])), а не над ней ..

Ответы [ 6 ]

2 голосов
/ 11 января 2012

Используйте строку с одинарными или двойными кавычками вместо heredoc, и все должно быть в порядке.

1 голос
/ 11 января 2012

Ошибка, которую вы получаете (но не упоминается), вероятно, является ошибкой разбора.HEREDOC синтаксис требует {} фигурные скобки вокруг переменных или отсутствие ключевых кавычек для простого доступа к массиву.Обходной путь может быть строкой NOWDOC.


Но с этим методом все равно не справишься.PHP-код в строковом контексте не запускается.И бессмысленно применять какие-либо обходные пути.Просто используйте скрипт включения вместо HEREDOC и используйте ob_start и ob_get_clean для захвата вывода.

0 голосов
/ 11 января 2012

Попробуйте это:

function makeHeader () 
{
    $menuContent = "<!DOCTYPE html><html> etc.........." . 
    if(isset($_SESSION['user']))
    {
        $user = isset($_SESSION['user']) ? $_SESSION['user'] : '';  
        $menuContent .= "<a href='logout.php'>$user</a>";
    }
    else
    {
        $menuContent .= "some text..";
    }

    $menuContent .= "\n";
    return $menuContent;

}

0 голосов
/ 11 января 2012

Я не думаю, что это возможно, но мне было бы очень интересно узнать, если я ошибаюсь.

Что касается того, что вы здесь делаете, я думаю, что ваша жизнь станет в миллион раз проще, если вы просто сбросите содержимое PHP для заголовка в файл с именем header.php и включите его следующим образом:

<?php

  include("header.php"); // Containing the code you're trying to put into $menuContent

?>

Существует также множество хороших шаблонных фреймворков (Smarty, Liquid, Mustache), если вы хотите не изобретать это колесо, хотя я понимаю привлекательность.

0 голосов
/ 11 января 2012

Что такое ошибки?

У вас есть session_start заранее? Eg.:

function makeHeader () {  
session_start();
$menuContent = <<<MENU 
0 голосов
/ 11 января 2012

Ваш код неполный?или вам не хватает закрытия} в конце функции makeHeader?это вызвало бы исключение в строке «если».не говоря уже о отсутствующем закрывающем теге php до HTML-кода.

Я думаю, что реальная проблема в том, что вы не можете иметь и заканчивать тег и HTML внутри функции.если вам это действительно нужно, то вы можете «повторить» HTML, если это необходимо.но я не могу себе представить, что вы захотите написать весь документ от начала до конца с помощью эхо-операторов.

Подойдет ли следующее?все в разделе меню раньше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...