Форум русскоязычного сообщества Ubuntu


Автор Тема: PHP глобальные перменные глобальны наполовину.  (Прочитано 375 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ii343hbka

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1048
    • Просмотр профиля
Вот код.
function _INIT_GLOBVARS( ) {
         global $DBPATH, $PHOTODIR;
         global $INFO_ITEMSCOUNT, $INFO_EXISTITMSCNT;
         global $MF_OBJECTPART, $MF_QUERYTPART, $MF_INFOCODESPART, $MF_LOGSPART;
         global $AF_OBJECTINFOPART, $AF_TREEPART;
         
         $DBPATH = './data.sqlite'; $PHOTODIR = './photos/';
         $INFO_ITEMSCOUNT = 15; $INFO_EXISTITMSCNT = 0;
         $MF_OBJECTPART = $MF_QUERYTPART = $MF_INFOCODESPART = $MF_LOGSPART = '';
         $AF_OBJECTINFOPART = $AF_TREEPART = '';
         
         if( isset($_GET['DEBUG']) ) {
             echo '<p>_INIT_GLOBVARS:';
             print_r($GLOBALS);
             echo '</p>';
         }
     }

он вызывается из другой функции.
_MAIN_();
    function _MAIN_() {
   
        _INIT_GLOBVARS( );
       
        if( isset($_GET['DEBUG']) ) {
             echo '<p>_MAIN:';
             print_r($GLOBALS);
             echo '</p>';
         }
и потом есть цикл
$ind = $INFO_EXISTITMSCNT;
        for ( $ind; $ind < $INFO_ITEMSCOUNT; $ind++ ) {   
            $AF_OBJECTINFOPART .=

так вот проблема в том, что переменные, объявленные и инициализированные в _INIT_GLOBVARS глобальны только наполовину. Они есть в массиве $GLOBALS, но интерпретатор их не видит как переменные, ругаясь следующим образом на строчку с циклом
Notice:  Undefined variable: INFO_EXISTITMSCNT in /var/www/dbfill/testindex.php on line 447
ж)
ммм... Убунточка

Оффлайн Y.dMiTrIy

  • Активист
  • *
  • Сообщений: 586
  • Ukraine Donetsk | HP ProBook 4530s Ubuntu 12.10
    • Просмотр профиля
У вас режим отладки включен?

Оффлайн ii343hbka

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1048
    • Просмотр профиля
) ну ошибочки светит
или есть норм. дебагер?
ж)
ммм... Убунточка

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
ТС, так и должно быть.
В _MAIN_() не указано, что используется глобальные переменные (а не локальные (с таким же именем почему-то ???), но это может быть в общем случае).

Оффлайн ii343hbka

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1048
    • Просмотр профиля
ну так я думал, если переменная глобальная, то она доступна во всех областях видимости со своим именем и значение.
Откуда ж мне было знать, что надо говорить, что переменные глобальны в начале каждой функции.
Теперь буду знать.
Спасибо.
ж)
ммм... Убунточка

Оффлайн dmig

  • Старожил
  • *
  • Сообщений: 1668
    • Просмотр профиля
) ну ошибочки светит
или есть норм. дебагер?
1) пишите сразу в $GLOBALS
2) xdebug, zend debugger


 

Страница сгенерирована за 0.06 секунд. Запросов: 24.