Разрешено ли такое задание глобальных переменных?

Аватар пользователя warobushek

Если я сделаю вот такую запись вне всякого хука в коде модуля, то я таким образом объявлю глобальную переменную?

<?php
$month
['01'] = 'января';?>
Ключевые слова:
Версия Drupal:
0 Спасибо

Комментарии

Аватар пользователя warobushek
warobushek 7 лет назад

А вот у меня почему то не работает
<?phpisset($month)?>
возвращает false

Вы уверены?

0 Спасибо
Аватар пользователя xxandeadxx
xxandeadxx 7 лет назад

$GLOBALS['month']['01'] = 'января';

0 Спасибо
Аватар пользователя warobushek
warobushek 7 лет назад

о_О а вот этот способ работает
У меня на этой же площадке в другой папке вариант доступа через global работает, а здесь нет.

в той папке джумла,а тут друпал..

0 Спасибо
Аватар пользователя vgoodvin
vgoodvin 7 лет назад

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

0 Спасибо
Аватар пользователя warobushek
warobushek 7 лет назад

есть то есть...
Но вот как сделать, чтобы ключевое слово global работало?
Или только править уже существующий код?

0 Спасибо
Аватар пользователя vgoodvin
vgoodvin 7 лет назад

А при каких условиях у вас не работает? У меня в одном хуке в разных модулях помню пахало.

0 Спасибо
Аватар пользователя direqtor
direqtor 7 лет назад

А чем в друпале не устраивает [ru-api=variable_set]variable_set()[/ru-api]

0 Спасибо
Аватар пользователя warobushek
warobushek 7 лет назад

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

0 Спасибо
Аватар пользователя vgoodvin
vgoodvin 7 лет назад
direqtor написал:
А чем в друпале не устраивает variable_set()

Наверно некоторых не устраивает то что эти переменных храняться в БД и таблица с переменными загружается всегда полностью. IMXO, если надо где-то хранить простые настройки, то конечно в variables, а если нужен какай-то временный буфер или кеш, то можно попробовать global или static.

0 Спасибо
Аватар пользователя direqtor
direqtor 7 лет назад
warobushek написал:
а там используются глобальные переменные.

Так засуньте их в переменные друпала и пользуйте. Чем variable_get хуже global?

0 Спасибо
Аватар пользователя warobushek
warobushek 7 лет назад

Ничем. Но! это ведь лишняя работа. Может дело всего навсего в какой-нибудь настройке

vgoodvin написал:

есть функция, которая передает значение в hook_block
в ней я пишу:

<?php
 
$test 
'yahoo';
function 
content(){
  global 
$test;
  
var_dump($test);
}  

?>

0 Спасибо
Аватар пользователя vgoodvin
vgoodvin 7 лет назад
warobushek написал:
есть функция, которая передает значение в hook_block

А разве надо не так:

<?php
global $test;
$test 'yahoo';

function content(){
  global 
$test;
  
var_dump($test);
}
?>

?

0 Спасибо
Аватар пользователя vgoodvin
vgoodvin 7 лет назад

ХЗ. Используйте $GLOBALS.

0 Спасибо
Аватар пользователя direqtor
direqtor 7 лет назад
warobushek написал:
это ведь лишняя работа. Может дело всего навсего в какой-нибудь настройке

Какая лишняя работа? Все, что вы суете в переменные друпала при его инициализации загружается всегда в глобальную переменную $conf. А [ru-api=variable_get]variable_get[/ru-api] просто берёт их оттуда.

0 Спасибо
Аватар пользователя iHappy
iHappy 7 лет назад
warobushek написал:
Здесь такого не видел че-то

чего именно нет?
 variable_get? Там его и не должно быть.

0 Спасибо
Аватар пользователя warobushek
warobushek 7 лет назад
iHappy написал:
чего именно нет?

это vgoodvin адресовано

0 Спасибо
Аватар пользователя warobushek
warobushek 7 лет назад

direqtor
эт я про затраты времени на исправление всех глобальных переменных в уже написанных скриптах

спасибо за ликбез

0 Спасибо
Аватар пользователя direqtor
direqtor 7 лет назад
warobushek написал:

Тратьте это время безбоязненно. Оно потом воздастся.

0 Спасибо
Аватар пользователя penexe
penexe 7 лет назад
direqtor написал:
Тратьте это время безбоязненно. Оно потом воздастся.

+1

0 Спасибо