Синтаксическая ошибка Heredoc - PullRequest
7 голосов
/ 04 января 2012

Для скинов в MediaWiki я получаю сообщение об ошибке для следующего фрагмента кода

    private $_sideboxf = <<<EOD
        <h3>%s</h3>
        <ul class="submenu">
            %s
        </ul>
EOD;

Ошибка: syntax error, unexpected T_START_HEREDOC.Я проверил синтаксис, и я не знаю, что не так.Даже автор кода не понимает, почему я получаю эту ошибку, когда спрашиваю о git.

РЕДАКТИРОВАТЬ: определение класса

class SkinTemplate extends QuickTemplate
{
    private $_sideboxf = <<<EOD
    <h3>%s</h3>
    <ul class="submenu">
        %s
    </ul>
EOD;
// Some public function
} // End of Class

Ответы [ 3 ]

7 голосов
/ 04 января 2012

PHP5.3.0 + требуется для инициализации переменных класса с использованием heredoc, ваш код отлично работает на PHP 5.3

4 голосов
/ 04 января 2012

Вы действительно хотите сделать этот heredoc во время инициализации переменной-члена?Может быть, лучший маршрут будет выглядеть примерно так:

class MyClass 
{
    public function getSideBoxF()
    {
        return <<<EOD
            Stuff goes here...
EOD;

    }
}

Также обратите внимание, что закрывающий HEREDOC должен находиться на одном уровне с левым полем, я добавил оболочку класса, чтобы показать вам, как он должен выглядеть.

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

Является ли конечный тег heredoc действительно отступом?

Это плохо работает IIRC ...

...