Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 10.11.2012 Ostrzeżenie: (0%)
|
Witam. Mam np. coś takiego
i jak zrobić tak aby podczas dziedziczenia można było się odnosić do metod tej klasy np. w taki sposób:
Czyli moje pytanie brzmi jaki sposób przypisać do zmiennej klase tak aby można było później odwoływać się do tej klasy po przez tą zmienną: $this->wyswietl->METODA(); (IMG:style_emoticons/default/questionmark.gif) Nie interesuje mnie samo: $this->metoda(); Pozdrawiam serdecznie! |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
Zależy czy klasa czlowiek jest klasą potomną klasy pokaz. Jeśli tak to poczytaj o chainingu. W skrócie chodzi o to, by każda metoda miała: return $this; wtedy przekazywać możesz kolejnym metodom instancję obiektu łańcuszkiem. A dlaczego tak? Pomyśl (IMG:style_emoticons/default/smile.gif) Metoda LiczTekst jest wykonywana tylko gdy wywołuje ją obiekt danej klasy i jej klasy potomnych (o ile nie jest przez nie przesłonięta). Tak więc musi być wywoływana jako $this->LiczTekst... ale jeśli $this jest jednocześnie jako return z innej metody, to można to potraktować jako ciągłość. Dlatego też ta właściwość jest nazywana "chaining", ponieważ umożliwia łączenie metod w łańcuch, gdzie wyjście jednej jest jednocześnie wejściem dla kolejnej.
Oczywiście ma to sens tylko w przypadku metod, które teoretycznie nie powinny zwracać określonej wartości oczekiwanej, bo po co mam zwracać cały obiekt przykładowo w metodzie getName? (IMG:style_emoticons/default/wink.gif) Jest to jednak idealne do setterów, które mogą przekazywać sobie obiekt klasy i ciurkiem ustawiać określone atrybuty klasy, czyli to o co w sumie Ci chodzi. A tak offtopem... Jak dla mnie połączenie wyświetlania i liczenia to trochę niezbyt logiczna kombinacja. Albo coś wyświetlasz na jakimś urządzeniu wyjściowym, albo coś liczysz. Jeśli zaś chcesz by zmienna wyswietl miała metody innej klasy to... przypisz jej ten obiekt. Czyli $this->wyswietl = new pokaz(); Myślę, że coś takiego można już na etapie konstruktora klasy zrobić.
Powód edycji: [thek]: Ostatni akapit dodany po kilkukrotnym przeżuciu o co Ci może chodzić ;)
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 75 Pomógł: 20 Dołączył: 8.10.2012 Ostrzeżenie: (0%)
|
tak naprawde to tu nie ma zadnej logiki. sam pomysl polega na tym ze metoda zwraca instancje obeiktu, przez co nie musimy caly czas przed nazwa metody pisac nazyw obiektu ktory ma ja wywolac.
przykładowo:
$output = new Output; $output->Hello()->World(); zwroci: Hello World |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 10.11.2012 Ostrzeżenie: (0%)
|
Dzięki Panowie. Rozwiązałem to chwile po założeniu tematu. Klasa podsawowe to np. smarty dla widoku (IMG:style_emoticons/default/wink.gif)
Pozdrawiam! |
|
|
|
![]() ![]() |
|
Aktualny czas: 24.12.2025 - 17:39 |