Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcje we funkcjach a zmienne
Forum PHP.pl > Forum > PHP
seba123
Hey ! Na wstępie zaznaczam, że wstyd mi że poległem na czymś takim... wstydnis.gif ale do rzeczy.

Mam taki kod
  1. function moja_funkcja()
  2. {
  3. $atomojazmienna = 'wartosc';
  4.  
  5. function moja_funkcja_w_srodku()
  6. {
  7. /*global $atomojazmienna;*/
  8. echo $atomojazmienna;
  9. }
  10.  
  11. moja_funkcja_w_srodku();
  12. }
  13.  
  14. moja_funkcja();
no właśnie, i tu mam problem - jak dostać się do zmiennej
  1. $atomojazmienna
?
Uriziel01
Albo trzymać ja jako globalną albo przekazać ja jako parametr wywołania kolejej funkcji albo (jeżeli piszesz obiektowo) przekazać instancję obiektu który daną zmienna posiada.

EDIT:
Ale chwileczkę, dlaczego masz deklaracje funkcji w funkcji ? Chyba tutaj czegos nie rozumiem ? Możesz wywoływać funkcje wewnątrz innych funkcji ale jak chcesz tam je zadeklaraować, to chyba nawet nie ma prawa działać.
Powinienes napisać:
  1. function moja_funkcja_w_srodku()
  2. {
  3. }
  4. function moja_funkcja()
  5. {
  6. moja_funkcja_w_srodku();
  7. }
  8.  
  9. moja_funkcja();
seba123
Opiszę zastosowanie jakie mam. Wygląda kod tak:
  1. class obiekty {
  2.  
  3. function moja_funkcja()
  4. {
  5. $atomojazmienna = 'wartosc';
  6. // tu sie cos dzieje, etc
  7.  
  8. // a w tym miejscu musze uzyc preg_replace_callback, i we funkcji ktora podalem jako parametr preg_replace_callback chce uzyc $atomojazmienna
  9. }
  10. }


W komentarzu wyjaśnione wszystko.
Uriziel01
Rozumiem. Ale skąd tak naprawdę bierze się ta wartość $atomojazmienna ? Dlaczego nie możesz tego przechowywać jako atrybutu obiektu 'obiekty' ? Bo rozumiem że to są dwie metody w ramach jednego obiektu, tak ?

EDIT:
Jeżeli sa to dwie metody w tej samej instancji obiektu możesz przeciez użyć:
  1. class obiekty
  2. {
  3. function moja_funkcja()
  4. {
  5. $atomojazmianna = 'wartosc';
  6. $this->atomojazmianna = $atomojazmianna;
  7. }
  8.  
  9. function moja_kolejna_funkcja()
  10. {
  11. echo $this->atomojazmianna;
  12. }
  13. }
batman
Takie coś powinno zadziałać

  1. class obiekty
  2. {
  3. function moja_funkcja()
  4. {
  5. $atomojazmienna = 'wartosc';
  6. // tu sie cos dzieje, etc
  7.  
  8. preg_replace_callback($pattern, function() use ($atomojazmienna) {
  9. $atomojazmienna; // zmienna jest widoczna
  10. }, $subject);
  11. }
  12. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.