Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод результатов работы функции
 
 автор: Владимир55   (07.07.2012 в 12:38)   письмо автору
 
 

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

Последний способ опасен тем, что переменные в функции и в теле скрипта могут совпасть и это нарушит его работу. Однако это очень удобно, если нужно выводить много переменных, некоторые из которых являются массивами.

Поэтому хотелось бы понять, есть ли еще какие-то недостатки использования глобальных переменных?

Может, с позиции безопасности? Или еще чего-то?

  Ответить  
 
 автор: confirm   (07.07.2012 в 13:34)   письмо автору
 
   для: Владимир55   (07.07.2012 в 12:38)
 

Не надо путать register_globals с global и $GLOBALS.

  Ответить  
 
 автор: cheops   (08.07.2012 в 13:46)   письмо автору
 
   для: Владимир55   (07.07.2012 в 12:38)
 

А в чем сложность с получением результата через return? Просто возвращайте массив или объект с множеством результирующих значений.

  Ответить  
 
 автор: Владимир55   (08.07.2012 в 14:25)   письмо автору
 
   для: cheops   (08.07.2012 в 13:46)
 

return возвращает только одну переменную и потому приходится все возвращаемое запаковывать в один массив. А результаты работы функции получаются в виде трех массивов и нескольких переменных.

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

  Ответить  
 
 автор: cheops   (08.07.2012 в 19:26)   письмо автору
 
   для: Владимир55   (08.07.2012 в 14:25)
 

Работать можно, только возникает вероятность, что вы задействуете еще одну переменную с таким же именем и функция вам его перепишет, что приведет к ошибке, которую нужно будет довольно долго искать и исправлять. Если не пользоваться глобальными переменными (или использовать для них пространство имен) этот тип ошибок можно исключить полностью. Однако, массив, сам может выступать в виде своеобразного пространства имен, объект делает это еще лучше.

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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования