Cytat
Jakis praktyczny przyklad masz komponent News i pokolei klase News_Model,News_View i News_Controller
To teraz tak:
1) Czym jest w tym przykładzie News, czym jest News Model, czym News View oraz czym jest News Controller? Skoro mają dziedziczyć po tym samym (News) sugeruje to, że wszystkie te klasy są Newsem, jednakże ciężko jest mi wyobrazić sobie jakąkolwiek zależność (na tej płaszczyźnie) pomiędzy takimi klasami.
Cytat
Jako ze uzywamy MVC to jesli model komponentu News bedzie dziedziczyl po klasie do obslugi np mysql'a to bedzie ok czyli:
class News_Model extends MySqlDb { }
Dlaczego co widzę pytanie mające najmniejszy związek z OOP/projektowaniem aplikacji zaraz wplata się wątek MVC? Biedne MVC jest już chyba tym dla PHP co AJAX dla JS.
Nie wprowadzaj w ogóle pojęcia tego wzorca na tę chwilę bo jest to zbyteczne. Jedynie mieszasz autorowi wprowadzając kolejne "dziwne nazwy" których nie rumie (Ty zresztą chyba też o czym za chwilę - bez urazy

).
Dlaczego NewsModel (czyli jak rozumiem coś co ma pełnić rolę Modelu dla zasobu: News) ma dziedziczyć po klasie obsługi bazy danych? W jaki sposób News rozszerza dostęp do bazy danych? Czy News jest dostępem do bazy danych? Tak absurdalne pytania tworzy Twój pomysł. Ten obiekt (NewsModel) co najwyżej może wykorzystywać obiekt MysqlDB. Może nie oznacza, że musi, bo Newsy mogą być pobierane np. z pliku XML czy z innego portalu - wtedy nie ma potrzeby by NewsModel w ogóle miał możliwość zrobienia czegokolwiek w bazie danych.
Cytat
A dlaczego jest ok bo klasa News_Model nie wprowadza zadnych nowych funkcjonalnosci ktore zmienia przeznaczenie klasy tylko operuje na bazie tak jak to robi klasa MySqlDb z tym ze rozszerza je o funkcje pobierania news'ow,usuwania ich,edytowania i dodawania operujac zawsze na bazie.
Wybacz, ale: Google "dziedziczenie programowanie obiektowe", "kompozycja programowanie obiektowe". Nie rozpoznajesz relacji
jest (
is a) oraz
ma (
has a).
Cytat
Instancje klasy uzywasz wtedy gdy potrzebujesz uzyc jakas klase w srodku innej jednak te w klasy nie maja ze soba nic wspolnego
No tutaj to już pojechałeś... Jeżeli dwa obiekty nie mają ze sobą nic wspólnego to jakim cudem mogą współpracować?
Cytat
To znaczy nie mozesz zrobic takie potwora z czarnobyla:
class Controller extends View { }
Tak swoją drogą... tutaj piszesz o Czarnobylach, a wcześniej sam takiego zrobiłeś (NewsModel dziedziczy po MySQLDB)
Cytat
Nie wiem czy jasno napisalem moze przyklady jakies takie nie takie ale na szybko podalem przyklad.
class Auto { }
class Fiat extends Auto { } // jako tako ma sens bo kazdy pojazd robi to samo tylko jeden moze miec wiecej ficzerow niz drugi
class Bmw extends Auto { } // ok
class Motor extends Auto { } // nie bardzo pasuje
Przykład z dupy... znaczy się: kompletnie niepoprawny. Jakim cudem BMW może być rozszerzeniem samochodu? Przecież to jest marka samochodu (BMW czyli marka mogłoby być właściwością obiektu).
Przykład korygujący:
abstract class Pojazd {} // Może się poruszać, przyśpieszać, hamować
abstract class PojazdKołowy extends Pojazd {} // To co Pojazd + Ma koła, może skręcać
class Rower extends PojazdKołowy {} // to co PojazdKołowy + Ma łańcuch
class Smaochód extends PojazdKołowy {} // to co PojazdKołowy + Ma silnik, zbiornik paliwa, nadpisuje "przyśpieszać" (by spalało paliwo), może tankować
Kod
IMHO nie rozszyfrowałem skrótu acl.
ACL = Access Control List
Kod
Mądrze piszesz i trochę mi rozjaśniłeś ale czy jest sens żeby taka przykładowa klasa News_Model dziedziczyła po MYSQLDB ?
Jak już napisałem - nie ma. Co więcej jest to błąd.
btw: Nie ulegaj złudzeniu, że jak ktoś się posługuje zwrotami, których nie znasz, to automatycznie oznacza, że się zna.

Kod
Przecież można przekazać zwyczajnie obiekt, po co każda lepsza klasa potem ma dziedziczyć z Mysqla. Jeżeli ta klasa będzie musiała dziedziczyć z innej przy okazji?
Dokładnie tak to powinno być rozwiązane.
Kod
PHP nie obsługuje z tego co wiem dziedziczenia z kilku klas.
Tak jest. ...i całe szczęście.
Kod
Jaka jest praktyczna różnica pomiędzy dziedziczeniem a wywołaniem obiektu klasy w klasie, przykład:
Dziedziczenie oznacza właśnie relację typu:
jest. Jeżeli Jabłko dziedziczy po Owoc to możemy powiedzieć, że Jabłko
jest Owocem - przy czym Jabłko to jakiś bardziej wyspecjalizowany byt niż Owoc. To drugie to tzw. kompozycja i jest to relacja typu:
ma. Samochód
ma silnik (
ma również Lusterko, Fotel, Kierownicę), ale o samochodzie nie powiesz, że
jest to silnik.
Kiedy używamy kompozycji? W momencie, kiedy dany obiekt, potrzebuje wykonywać jakieś operacje na innym.
Przykład:
class Silnik {
public $moc;
public $spalanie;
}
class Samochód {
public $silnik;
public $paliwo;
public function możeJechać($km) {
return $this->paliwo > $this->slinik->spalanie * $km;
}
public function jedź($km) {
$this->paliwo -= $this->slinik->spalanie * $km;
}
}
$silnik = new Silnik();
$silnik->moc = 75;
$silnik->spalanie = 0.5;
$samochód = new Samochód();
$samochód->silnik = $silnik;
$samochód->paliwo = 50;
while ($samochód->możeJechać(50)) {
$samochód->jedź(50);
}
Ten przykład łamie wiele paradygmatów obiektówki (np. hermetyzację danych), ale powinno dać Ci to jako taki obraz na współpracę obiektów.