Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja w funkcji
Forum PHP.pl > Forum > PHP
Jazi
Mam następujący kod:
  1. class X {
  2. function A() {
  3. function B() { ... }
  4. }
  5. }
  6.  
  7. $test = new X();
  8. $test->A();
  9. $test->A();

Zwraca mi to błąd, że funkcja jest zadeklarowana więcej niż raz.

Pytanie moje brzmi następująco: czemu, skoro f-cja B jest wewnątrz innej funkcji, jest ona traktowana globalnie (że tak powiem)? Czy nie obejdzie się bez 'function_exists' przed deklaracją B() w A()?
wookieb
Nie obejdzie się bez "function_exists".
Dlaczego jest traktowana globalnie? Taki jest PHP. TO nie język funkcyjny.
Bags_Bunny
Jeśli chcesz, aby ta funkcja była dostępna wyłącznie wewnątrz metody A(), możesz trzymać ją w zmiennej lokalnej (PHP 5.3.0+):

  1. class X {
  2. function A() {
  3. $B = function() { ... };
  4. $B(); // użycie
  5. }
  6. }
  7.  
  8. $test = new X();
  9. $test->A();
  10. $test->A();


@down: cieszę się, że mogłem pomóc.
Jazi
O coś takiego mi chodziło smile.gif. Dziękuję.
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.