Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kiedy używać dziedziczenia ?
Damiankossek
post
Post #1





Grupa: Zarejestrowani
Postów: 118
Pomógł: 8
Dołączył: 10.12.2009

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


Witam, tak jak w temacie ... Wszedłem w świat OOP jakiś czas temu, teraz robię strony na Kohanie (IMG:style_emoticons/default/smile.gif) Bardzo przypadła mi do gustu ... Możecie powiedzieć mi kiedy używać dziedziczenia ? Wiem że jest to `jakby` rozdrabnianie klas ... Lecz nigdy nie mogłem znależć praktycznego zastosowania dziedziczenia w swoich skryptach (IMG:style_emoticons/default/smile.gif) Prosiłbym kogoś o takie szybkie i łopatologiczne rozpisanie jakiegoś skryptu np. newsów, artykułów czy czego kolwiek (byle nie zwierząt (IMG:style_emoticons/default/tongue.gif) ) ... Nie mówię że ma być kod tylko jak to ma wyglądać w praktyce, w formie jakiegoś drzewka lub czego kolwiek (IMG:style_emoticons/default/smile.gif)

No i jeszcze jedno .. Jak dziedziczyć w Kohanie ? Bo widzę że moje wszystkie modele i kontrolery już dziedziczą klasy wyznaczone przez Kohane (IMG:style_emoticons/default/smile.gif) _Models i _Controllers ... Da się jeszcze podpiąć coś czy nie bardzo (IMG:style_emoticons/default/smile.gif) ?

Przepraszam jeżeli są to jakieś durne pytania, ale niepotrafie zastosować tego w praktyce (IMG:style_emoticons/default/smile.gif)

Pozdrawiam

Ten post edytował Damiankossek 24.03.2010, 14:50:44
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
Nie myl dziedziczenia z implementacją.
To tak trochę bardziej łopatologicznie:
Dziedziczenie interfejsu: interfejsy
Dziedziczenie interfejsu + implementacji: dziedziczenie

Kiedy używać dziedziczenia?
Bardzo prosto... kiedy o obiekcie klasy A możesz powiedzieć, że jest on również obiektem klasy B.
O ile dobrze pamiętam na stronach Suna fajnie było to opisane: http://java.sun.com/docs/books/tutorial/ja...nheritance.html
W ogóle dobrze będzie jak sobie przeczytasz: http://java.sun.com/docs/books/tutorial/ja...epts/index.html (co prawda w PHP nie ma paczek (ang. package), ale są przestrzenie nazw (ang. namespaces), które w pewnym sensie oznaczają to samo) - będziesz przynajmniej wiedział jakie są podstawowe narzędzia obiektówki.

Cytat
Wiem że jest to `jakby` rozdrabnianie klas
To nie jest rozdrabnianie - to jest precyzowanie/wyszegóławianie (niepoprawnie to napisałem) klas.
Cytat
Prosiłbym kogoś o takie szybkie i łopatologiczne rozpisanie jakiegoś skryptu np. newsów, artykułów czy czego kolwiek (byle nie zwierząt
Przykłady ze zwierzętami czy kształtami są bardzo dobre - ale w świecie Javy itp., a nie PHP.

No to na szybko. Czym jest news i artykuł? Oba te obiekty są formą jakiegoś wpisu, które współdzielą jakieś cechy (autor, data utworzenia, treść).
  1. <?php
  2.  
  3. abstract class TextItem {
  4. protected $author;
  5. protected $title;
  6. protected $content;
  7. protected $created_at;
  8.  
  9. protected $viewed = 0; // ilość wyświetleń
  10.  
  11. abstract function load($id); // metoda wczytująca z bazy i wypełniająca obiekt pobranymi danymi
  12.  
  13. public function increaseViewed() {
  14. ++$this->viewed;
  15. }
  16.  
  17. // tutaj cała masa getterów/setterów
  18. }
  19.  
  20. class News extends TextItem {
  21. protected $short_content; // News ma jeszcze skrócona tresc
  22. protected $display_on_abc; // News ma jeszcze właściwość "Wyświetlaj w ABC"
  23.  
  24. public function load($id) {
  25. //....
  26. }
  27.  
  28. // gettery/settery dla dwóch nowych pól
  29. }
  30.  
  31. class Article extends TextItem {
  32. // A to akurat nie ma niczego specjalnego, ale oczywiście mogło by mieć. Np.: zaimplementowany podział treści na strony
  33.  
  34. public function load($id) {
  35. //....
  36. }
  37. }


Cytat
ak dziedziczyć w Kohanie ?
Nie znam tego FW, ale... normalnie? Poprzez extends
Cytat
Bo widzę że moje wszystkie modele i kontrolery już dziedziczą klasy wyznaczone przez Kohane _Models i _Controllers ... Da się jeszcze podpiąć coś czy nie bardzo ?
Możesz sobie utworzyć swoją własną klasę np.: MyController, która (by silnik Kohany mógł to obsłużyć) musi dziedziczyć po _Controllers. Wtedy w niej możesz zaimplementować swoje własne metody, a kontrolery niech dziedziczą po Twojej klasie. De facto będą one dziedziczyć po MyController i _Controllers (czyli obu).

Ten post edytował Crozin 24.03.2010, 17:42:11
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: 16.10.2025 - 02:15