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.htmlW 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ść).
<?php
abstract class TextItem {
protected $author;
protected $title;
protected $content;
protected $created_at;
protected $viewed = 0; // ilość wyświetleń
abstract function load($id); // metoda wczytująca z bazy i wypełniająca obiekt pobranymi danymi
public function increaseViewed() {
++$this->viewed;
}
// tutaj cała masa getterów/setterów
}
class News extends TextItem {
protected $short_content; // News ma jeszcze skrócona tresc
protected $display_on_abc; // News ma jeszcze właściwość "Wyświetlaj w ABC"
public function load($id) {
//....
}
// gettery/settery dla dwóch nowych pól
}
class Article extends TextItem {
// A to akurat nie ma niczego specjalnego, ale oczywiście mogło by mieć. Np.: zaimplementowany podział treści na strony
public function load($id) {
//....
}
}
Cytat
ak dziedziczyć w Kohanie ?
Nie znam tego FW, ale... normalnie? Poprzez
extendsCytat
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).