Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Funkcja w funkcji
Jazi
post
Post #1





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 25.08.2009
Skąd: Toruń / Bydgoszcz

Ostrzeżenie: (10%)
X----


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()?
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Nie obejdzie się bez "function_exists".
Dlaczego jest traktowana globalnie? Taki jest PHP. TO nie język funkcyjny.


--------------------
Go to the top of the page
+Quote Post
Bags_Bunny
post
Post #3





Grupa: Zarejestrowani
Postów: 262
Pomógł: 39
Dołączył: 12.04.2004

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


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.

Ten post edytował Bags_Bunny 11.07.2011, 18:32:52


--------------------
rm -rf /*
Go to the top of the page
+Quote Post
Jazi
post
Post #4





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 25.08.2009
Skąd: Toruń / Bydgoszcz

Ostrzeżenie: (10%)
X----


O coś takiego mi chodziło smile.gif. Dziękuję.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 06:30