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