Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]wywołanie zmiennej globalnej w zagnieżdżonej funkcji?
siemieng
post
Post #1





Grupa: Zarejestrowani
Postów: 101
Pomógł: 7
Dołączył: 16.01.2007

Ostrzeżenie: (0%)
-----


witam, mam taki problem:

  1. <?php
  2. function external($var)
  3. {
  4.    
  5.     function internal()
  6.     {
  7.         global $var;
  8.         echo $var;
  9.     }
  10. }
  11.  
  12. external('value');
  13. ?>


Pytanie dotyczy próby utworzenia zmiennej globalnej i uzyskania dostępu do niej z poziomu funkcji wewnętrznej, zakładając, że ta zmienna jest przekazywana jako argument funkcji zewnętrznej- jak to zrobić i czy się da?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?

Wiem, że w sytuacji gdy zmienna tworzona jest poza obiema funkcjami, następnie deklarowana jako globalna po kolei w każdej z nich działa, lub rozbicie funkcji na dwie osobne (równorzędne), też działa, ale proszę o podpowiedź do dej opisanej sytuacji, z góry dzięki (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował siemieng 25.05.2009, 21:16:00
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




po pierwsze kod ci nie zadziala tak jak chcesz, bo nigdzie nie wywolujesz internal().
po drugie: global dotyczy globali a nie parametrow funkcji. Mozesz od biedy przekazac do inernal jako parametr:
  1. <?php
  2. function external($var)
  3. {
  4.    
  5.    function internal($var)
  6.    {
  7.        echo $var;
  8.    }
  9.    
  10.    internal($var);
  11. }
  12.  
  13. external('value');
  14. ?>
Go to the top of the page
+Quote Post
siemieng
post
Post #3





Grupa: Zarejestrowani
Postów: 101
Pomógł: 7
Dołączył: 16.01.2007

Ostrzeżenie: (0%)
-----


Fakt, pominąłem wywołanie funkcji wewnętrznej, ale to tylko w tym przykładzie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Załapałem, że nie da się tak z parametrami, ale czy da się jakoś doprowadzić do działania coś takiego:
  1. <?php
  2. function external($var)
  3. {
  4.   $var2 = $var;
  5.  
  6.   function internal()
  7.   {
  8.      global $var2;
  9.       echo $var2;
  10.   }
  11.  
  12.   internal();
  13. }
  14.  
  15. external('value');
  16. ?>


W tym przypadku global nie dotyczy już parametru tylko zmiennej, czy się mylę??
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




global dziala na zmienne globalne. zmienna w funkcji nie jest globalna do czasu, az nie zrobisz z niej globalnej

  1. <?php
  2. function external($var)
  3. {
  4. global $var2;
  5. $var2 = $var;
  6.  
  7.  function internal()
  8.  {
  9.     global $var2;
  10.      echo $var2;
  11.  }
  12.  
  13.  internal();
  14. }
  15.  
  16. external('value');
  17. ?>

ps: po co ci wogole takie kombinowanie?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 20:35