Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Metoda wewnątrz metody
daniel1302
post
Post #1





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

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


Witam w teście na php.pl napotkałem na takie pytanie.
I czy może mi ktoś wytłumaczyć jak to wygląda, ja sobie uświadamiam, że to takie coś


  1. <?php
  2. Class Klasa
  3. {
  4. function metoda1()
  5. {
  6. function metoda2()
  7. {}
  8. }
  9. }
  10. ?>


Oto pytanie
Klasa posiada metodę z metodą wewnątrz niej. Jak możemy się odwołać do metody ujętej w innej metodzie?
$klasa->metoda1().metoda2()
$klasa.metoda1().metoda2()
$klasa->fmetoda1(metoda2())
$klasa->metoda1()->metoda2() - Ja to zaznaczyłem.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
#luq
post
Post #2





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

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


Cytat(belliash @ 11.04.2009, 20:17:20 ) *
Nie mniej jednak @#luq przepraszam bo nie zrozumielismy sie z mojej winy (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif)

Urazy nie czuję (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Mało się spotyka ludzi, którzy umieją się przyznać do błędu, więc za to Cie szanuję.

Cytat
$klasa->metoda1().metoda2(); bo w chwili wykonania metody metoda1() zostanie w global scope utworzona funkcja o nazwie metoda2() i mozna ja zwyczajowo wykonac:

$klasa->metoda1();
metoda2();


To jest dla mnie zrozumiała. Dopiero po pierwszym wywołaniu funkcji, jej kod jest wykonywany, a więc i funkcja b() jest dopiero w tym momencie deklarowana:
  1. <?php
  2. function a(){
  3.        function b(){
  4.            echo 'bla';
  5.        }
  6.    }
  7.  
  8.    // b(); <- nie zadziała
  9.    a();
  10.    b();  // tu już zadziała
  11. ?>


Korzystając z poprzedniej funkcji, dlaczego przy wywołaniach:
  1. <?php
  2. a();
  3. a().b();
  4. b();
  5. ?>


Wyskakuję:
Kod
<b>Fatal error</b>:  Cannot redeclare b()

Przecież, ja nie redeklaruję funkcji b(); (IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif)

Może ktoś wytłumaczyć za co odpowiada kropka w zapisie
  1. <?php
  2. a().b();
  3. ?>

Bo konkatenacja, to to nie jest (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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: 11.10.2025 - 03:19