Result 0 Опубликовано: 17 мая 2017 Рассказать Опубликовано: 17 мая 2017 Почему не работают глобальные переменные в подключенном скрипте Подключаю php скрипт {include file=""} Содержимое файла выводится нормально, но в месте где должна выводить контент функция - пусто. function main_content() { global $data; ......... return $data; } Глобальные переменные оказываются пустые. Почему так происходит и как выводить? Ссылка на сообщение Поделиться на других сайтах
celsoft 6216 Опубликовано: 17 мая 2017 Рассказать Опубликовано: 17 мая 2017 Где вы обьявляете свои глобальные переменные? Глобальные переменные сначала нужно объявить вне функции в корне, а только потом использовать в функциях. Ссылка на сообщение Поделиться на других сайтах
Result 0 Опубликовано: 17 мая 2017 Рассказать Опубликовано: 17 мая 2017 Автор Ну в смысле так $data = 'массив'; $data_one = 'еще массив'; еще переменные function main_content() { global $data, $data_one, еще переменные; Обработка return $result; } Как еще объявлять? Не понял. Вне движка то, все работает. Ссылка на сообщение Поделиться на других сайтах
MSK 290 Опубликовано: 17 мая 2017 Рассказать Опубликовано: 17 мая 2017 А разве глобальные переменные передаются в скрипт, который вставлен в шаблон? Ссылка на сообщение Поделиться на других сайтах
Result 0 Опубликовано: 17 мая 2017 Рассказать Опубликовано: 17 мая 2017 Автор 14 минуты назад, MSK сказал: А разве глобальные переменные передаются в скрипт, который вставлен в шаблон? Мне не нужно переменные в скрипт передавать, мне нужно, что бы мои переменные читались, а они пустые именно в функции. В самих переменных - вне функции контент есть, а внутри пусто. Ссылка на сообщение Поделиться на других сайтах
celsoft 6216 Опубликовано: 18 мая 2017 Рассказать Опубликовано: 18 мая 2017 10 часов назад, Result сказал: Ну в смысле так $data = 'массив'; $data_one = 'еще массив'; еще переменные function main_content() { global $data, $data_one, еще переменные; Обработка return $result; } Как еще объявлять? Не понял. Вне движка то, все работает. Как бы это обьяснить по понятнее Глобальные переменные доступны в функциях, когда они изначально объявлены корневом пространстве имен. Когда вы используете {include file=""} ваш код запускает специальная функция DLE, и как следствие она запускается не в корневом пространстве имен. Говоря проще ваша функция находится внутри другой функции, поэтому глобальные переменные вам недоступны. Если вам нужно чтобы ваша функция помнила состояние переменных между вызовами, вам нужно использовать статические переменные, либо передавать ваши переменные в качестве параметров функции. Ссылка на сообщение Поделиться на других сайтах
MSK 290 Опубликовано: 18 мая 2017 Рассказать Опубликовано: 18 мая 2017 6 часов назад, celsoft сказал: она запускается не в корневом пространстве имен Совершенно верно. Как выход - подключайте этот файл в php файле, который выводит нужный контент или глобально в файл верхнего уровня engine, init, main. Ссылка на сообщение Поделиться на других сайтах
Result 0 Опубликовано: 18 мая 2017 Рассказать Опубликовано: 18 мая 2017 Автор Все понял, спасибо. Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВойти
Уже зарегистрированы? Войдите здесь.
Войти сейчас