Перейти к публикации

Глобальные переменные в подключенных скриптах


Рекомендованные сообщения

Почему не работают глобальные переменные в подключенном скрипте

Подключаю php скрипт {include file=""}

Содержимое файла выводится нормально, но в месте где должна выводить контент функция - пусто.

 

function main_content() {

   global $data;

  .........

  return $data;

}

 

Глобальные переменные оказываются пустые. Почему так происходит и как выводить?

Ссылка на сообщение
Поделиться на других сайтах

Где вы обьявляете свои глобальные переменные? Глобальные переменные сначала нужно объявить вне функции в корне, а только потом использовать в функциях.

Ссылка на сообщение
Поделиться на других сайтах

Ну в смысле так

 

$data = 'массив';

$data_one = 'еще массив';

еще переменные

 

function main_content() {

   global $data, $data_one, еще переменные;

  Обработка

  return $result;

}

 

Как еще объявлять? Не понял. Вне движка то, все работает.

Ссылка на сообщение
Поделиться на других сайтах

А разве глобальные переменные передаются в скрипт, который вставлен в шаблон?

Ссылка на сообщение
Поделиться на других сайтах
14 минуты назад, MSK сказал:

А разве глобальные переменные передаются в скрипт, который вставлен в шаблон?

Мне не нужно переменные в скрипт передавать, мне нужно, что бы мои переменные читались, а они пустые именно в функции. В самих переменных - вне функции контент есть, а внутри пусто.

Ссылка на сообщение
Поделиться на других сайтах
10 часов назад, Result сказал:

Ну в смысле так

 

$data = 'массив';

$data_one = 'еще массив';

еще переменные

 

function main_content() {

   global $data, $data_one, еще переменные;

  Обработка

  return $result;

}

 

Как еще объявлять? Не понял. Вне движка то, все работает.

Как бы это обьяснить по понятнее :) Глобальные переменные доступны в функциях, когда они изначально объявлены корневом пространстве имен. Когда вы используете {include file=""} ваш код запускает специальная функция DLE, и как следствие она запускается не в корневом пространстве имен. Говоря проще ваша функция находится внутри другой функции, поэтому глобальные переменные вам недоступны. Если вам нужно чтобы ваша функция помнила состояние переменных между вызовами, вам нужно использовать статические переменные, либо передавать ваши переменные в качестве параметров функции.

Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, celsoft сказал:

она запускается не в корневом пространстве имен

Совершенно верно.

Как выход - подключайте этот файл в php файле, который выводит нужный контент или глобально в файл верхнего уровня engine, init, main.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...