Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: проблема с function

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: глобальная переменная
andy89
Отправлено: 07 Июля, 2011 - 12:47:07
Post Id


Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. function foo() {
  3. global $content;
  4. $content = "Text";
  5. }
  6. function test(){
  7. foo();
  8. echo $content;
  9. }
  10. test(); #почему не выводит переменную $content (text) ???
  11.  
 
 Top
Мелкий Супермодератор
Отправлено: 07 Июля, 2011 - 12:48:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Потому что global делает переменную видимой только для текущей функции.


-----
PostgreSQL DBA
 
 Top
andy89
Отправлено: 07 Июля, 2011 - 12:51:47
Post Id


Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




а как вывести переменную $content в функций test? Не понял
 
 Top
garvey
Отправлено: 07 Июля, 2011 - 12:56:07
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




Использование глобальных переменных - плохой тон. Если программируете с ООП, то сохраняйте значение в свойстве объекта. Если уж программируете процедурно, то возвращайте то, что вам нужно.
Первый вариант с global:
PHP:
скопировать код в буфер обмена
  1. global $content;
  2. function foo() {
  3.     $content = "Text";
  4. }
  5. function test(){
  6.     foo();
  7.     echo $content;
  8. }
  9. test();

Второй вариант с return:
PHP:
скопировать код в буфер обмена
  1. function foo() {
  2.     return "Text";
  3. }
  4. function test(){
  5.     echo foo();
  6. }
  7. test();
 
 Top
andy89
Отправлено: 07 Июля, 2011 - 12:59:17
Post Id


Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




Подмигивание Спасибо!
 
 Top
White
Отправлено: 08 Июля, 2011 - 08:48:35
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




garvey пишет:
сохраняйте значение в свойстве объекта

например:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. class global_vars {
  3.     public static $var;
  4.     private global_vars()
  5. }
  6.  
  7. function foo() {
  8.     global_vars::$var['some']='text';
  9. }
  10.  
  11.  
  12. function poo() {
  13.     echo global_vars::$var['some'];
  14. }
  15.  
  16. foo();
  17. poo();
  18.  


-----
if(time()>1356048000) die();
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB