За последние 24 часа нас посетили 19235 программистов и 1624 робота. Сейчас ищут 869 программистов ...

Строки, двойные кавычки, раскрытие переменных. Запутался.

Тема в разделе "PHP для новичков", создана пользователем mck79, 30 май 2011.

  1. mck79

    mck79 Активный пользователь

    С нами с:
    30 май 2011
    Сообщения:
    4
    Симпатии:
    0
    Есть переменная $js которая содержит динамически изменяемый яваскрипт.
    Пример:
    PHP:
    1.  
    2. $func = 'test';
    3. $msg = 'ERR';
    4. $js = "function $func(){ alert(\"$msg\"); }";
    5.  
    Тут все отлично.

    Далее хочется избавится от необходимости экранировать кавычки, делаем так:
    PHP:
    1.  
    2. $func = 'test';
    3. $msg = 'ERR';
    4. $js = <<<JS
    5. function $func(){ alert("$msg");};
    6. JS
    7.  
    Т.е. используем Heredoc синтаксис. Тоже все вроде ОК.

    Далее, т.к. такие скриптовые вставки имеют тенденцию разрастаться, хочется вынести их содержимое в отдельный файл (типа шаблона). А заодно и редактировать будет проще (тут уже можно нормально использовать редактор с подсветкой JS синтаксиса).
    Но если просто подгружать содержимое через file_get_contents не парсятся (не раскрываются) переменные.

    Собственно, вопрос в том есть ли какой либо простой механизм выделить JS скрипт, но чтобы переменные в нем раскрывались (подставлялось содержимое) при выводе.

    Или тут дорога только в сторону использования каких-либо шаблонизаторов?
     
  2. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    mck79
    легче воспользоваться каким-либо простым или самописным шаблонизатором.

    либо подключать файлы с js-кодом в виде php-кода, т.е. файл "js-шаблона" будет выглядеть так:

    PHP:
    1. <?php
    2. $js = <<<JS
    3.   function $func(){ alert("$msg");};
    4. JS;
    5. ?>
    а там, где подключаешь:

    PHP:
    1. <?php
    2. include('js_template.php');
    3. echo $js;
    4. ?>