demon416nds
@demon416nds
Разработчик на чем попало

Как обратиться из функции к глобальной переменной текущего скрипта по имени если она не отображается в $GLOBALS?

Делаю плагин для getsimple cms. Плагин включает в себя функцию-шаблонизатор подставляющую в текст значения переменных.
Значения берутся через $GLOBALS['имя переменной'].
Если вызывать мой код напрямую все работает а если из cms в $GLOBALS отсутствуют переменные из того файла в котором вызывается функция шаблонизатора. Вероятно это связано с использованием буферизации вывода, но непонятно почему теряется контекст того файла в котором функция непосредственно вызывается.

структура кода:
в главном файле плагина
require_once(GSPLUGINPATH.plagdir.'common.php');//подключение файла с функциями плагина
# activate filter
add_filter('content','user_show'); //подписка на получение/изменение текста страницы перед отображением 

function user_show($text) //функция вызываемая cms для обработки текста страницы плагином
{
return process_template($text);//функция рекурсивного шаблонизатора из common.php
}

шаблонизатор при обнаружении в тексте {%имя php файла из папки для подключаемых файлов%}
подставляет вывод соответствующего php файла с помощью функции
function get_content($filename, $args)
{ 
    $replacement = '';
    if (is_file(GSPLUGINPATH . plagdir . '/inc/' . $filename . '.php'))
    {
        ob_start(); //включение буферизации вывода
        include (GSPLUGINPATH . plagdir . '/inc/' . $filename . '.php');
        $replacement .= ob_get_contents(); //присоединение содержимого буфера к $replacement
        ob_end_clean(); //очистка буфера
        $replacement = process_template($replacement);//рекурсивная обработка
    }
    if ($replacement == '') return $replacement;
   }

проблемы начинаются при вызове функции шаблонизатора из пресловутого
GSPLUGINPATH . plagdir . '/inc/' . $filename . '.php'
функция не видит глобальных переменных этого файла
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы