![]() |
![]() |
![]()
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ś
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. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
To musi być któreś z tych rozwiązań
$klasa->metoda1().metoda2() $klasa.metoda1().metoda2() $klasa->fmetoda1(metoda2()) $klasa->metoda1()->metoda2() |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Przecież metoda nie może mieć metody. Musisz stworzyć obiekt
//edit zapomniałem function (IMG:http://forum.php.pl/style_emoticons/default/wstydnis.gif) Ten post edytował #luq 11.04.2009, 18:47:47 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Powiem szczerze o takim czymś nie wiedziałem.
Co nie znaczy, że mylę się pisząc: Cytat metoda nie może mieć metody Metody mogą mieć tylko obiekty a, że metoda nie jest obiektem nie może mieć metod. Tak samo działa i takie coś:
I co w tym wypadku? Funkcja ma metodę? belliash wytłumacz mi w, którym miejscu napisałem bzdurę/bzdury? Co do tego odwoływania się do funkcji, funkcji to jakoś przypomina mi to C++. Tam do zmiennej obiektowej odwołujemy się przez operator kropki, natomiast jak mamy wskaźnik to przez strzałkę (->). W PHP jest na odwrót z tego wynika. Myślałem, że w PHP nie ma wskaźników jako takich. Czyli w PHP jest tak jak np. w C++, funkcja jest wskaźnikiem do miejsca, gdzie ona jest zapisana, i możemy to w jakiś sposób wykorzystać? Ogólnie, mógłby wytłumaczyć mi ktoś ten zapis z kropką? Na jakiej zasadzie to działa. Ten post edytował #luq 11.04.2009, 19:09:04 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
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:
Korzystając z poprzedniej funkcji, dlaczego przy wywołaniach:
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
Bo konkatenacja, to to nie jest (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Redeklarujesz (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) a(); -> deklarujesz; a().b(); -> redeklarujesz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Yhm... inaczej na to patrzałem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Myślałem, że: Kod a().b(); wywołuje tylko funkcje b(), a jest tak jak mówisz: Kod a().b(); To to samo co: Kod a();
b(); |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 19:56 |