Задать вопрос
newpdv
@newpdv
Web-devekioer

Странная работа global

Добрый день!

Код:

<?php $logpath = 234; function a() { global $logpath; var_dump($logpath); } a(); ?>

Почему может не работать?
Выводит NULL
  • Вопрос задан
  • 3361 просмотр
Подписаться 4 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 5
Проблема, видимо, в том, что обращение к переменной осуществляется не в глобальной области видимости.

Скорее всего всё решится, если перед обращением добавить ещё один global.

<?php global $logpath; $logpath = 234; function a() { global $logpath; var_dump($logpath); } a(); ?>


P.S. Можно использовать вместо этого хотя бы синглтоны, или константы, которые глобальны всегда.
Ответ написан
Dimitriys
@Dimitriys
1) все же надо видеть phpinfo()
2) указанный код запускается отдельно? ни во что не обернут? создаем testttt.php внутрь которого помещаем ваш код, запускаем через браузер и через cli… одинаковый разультат?
3) а если так? что возвращает?
<?php $GLOBALS['logpath'] = 234; function a() { var_dump($GLOBALS['logpath']); } a(); ?>
Ответ написан
HighQuality
@HighQuality
☁ Ниндзя девелопер
Почему бы не передавать это в функцию?
Ответ написан
Комментировать
@vtk
можно еще debug_print_backtrace() после <?php поставить, чтобы посмотреть в глобальной ли области создается $logpath = 234; или внутри какой-то функции.
Ответ написан
Комментировать
rmrevin
@rmrevin
Какая версия пхп?
register_globals=on?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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