Ничего не понимаю: глюк с исполнением функции

  • Автор темы Автор темы Holo
  • Дата начала Дата начала
>припиши в самом начале тела функции
>global $categ, $lang;

Вы щас научите, блин :)

Holo
Не слушай про globals. Передавай через парамтры.
 
sakon
вот это называется феерический топик.
_RVK_
[Не слушай про globals. Передавай через парамтры.
поясни, пожалуйста, почему? (чувствую, что я что-то пропустил)
 
Romashov

Потому что параметры для того и существуют. А global только запутывае программу. Потом черт ногу сломит пытаясь отыскать откуда у тебя в функции эта переменная и где она определяется.
 
Хех. Другой вариант, что функция может вызываться из разных скриптов, и одно и тоже значение может иметь разные имена переменных. И опять черт ногу сломит искать...
 
я не могу передавать $categ через параметр


$categ берется из базы, и над ней тоже проводятся некоторые действия
 
Алелуйя

с глобалами заработала,

Спасибо всем, особенно Romashov
 
Я не знаю случаякогда можно сделать через global и нельзя через параметр

-~{}~ 11.12.05 01:43:

>с глобалами заработала

еще раз предупреждаю. не используй global вообще. потом спасибо мне скажешь
 
хм.
я придерживаюсь принципа: параметры - те переменные, ради обработки которых пишется функция, а глобальными переменными указывать что-то общее, постоянное для скрипта (или всех скриптов сайта), например массив конфигурационных опций - чтобы значительно упростить вызовы функции и быть заведомо уверенным, что функция будет знать всё что нужно.
 
1) $categ[][] - каким боком функция его видит
2) $categ[$id][$lang] - $lang откуда взялась?
3) $result = $result.$categ[$id][$lang].','; Наверное было бы правильнее, судя по ожидаемому результату $result .= $categ[$id][$lang].','; И не мешалобы определить в начале функции $result='';

P.S. Очевидно результаты работы функции написаны от фонаря.
 
Romashov
я не говорю что global вообще не нужна. она нужна, как и @ как и eval. Но пользоватся сей фичей нужно с особой остарожностью, четко отдавая себе отчет в том что ты делаешь. В данном случае global это зло. Но вот для передачи массива конфигурации вполне сгодится.

Новичкам лучше вообще говорить "никогда не используй это". Когда они наберутся опыта, они сами поймут где это нужно использовать а где нет.
 
>в чем опасность использования globals?

я и sakon написали выше
 
В общем понятно,
будем учиться и набивать собственные шишки
 
Сверху