Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> dziedziczenie
rahul
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 5.03.2011

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


Witam was.
Mam taki problem w rozumieniu oop.
Chcialbym aby moja klasa UserManagera ktora zarzadza obiektem user dziedziczyla inna klase.

mam cos takiego:
Klasa user_M dziedziczy po klasie CRUD
  1. $Database = new Database($hostname,$dbname,$username,$password); // klasa database zwraca polaczenie PDO;
  2. $crud = new CRUD($Database ); // laduje do konstruktora obiekt PDO
  3.  
  4. $user_M = new userManager(); // tu wywala blad constructora klasy po ktorej dziedzicze ze parametr ktory przekazuje jest pusty.

Dodatkowo dodam ze dopiero co ucze sie OOP w php i wymyslilem sobie aby moje managery dziedziczyly pewne dodatkowe funkcje z klasy nadrzednej. W tej nadrzednej klasie musze natomiast w do konstruktora przekazac obiekt polaczenia z bd ktory znika przy wywolaniu jakiejkolwiek klasy ktora dziedziczy se.

albo w ogole jeszcze inne opcje.
Rozwazam teraz 2 warianty.
Czy lepiej aby moja baza danych dziedziczyla klase crud i wtedy przekazuje instancje bazy danych do userManagera czy aby moja klasa UserManagera dziedziczyla po klasie CRUD. bardziej podoba mi sie 2 opcja ale nie wiem na ile jest dobra. Co do poprzedniego posta to przeciez instancje moge obiektu bazy danych moge wykonac w konstruktorze a potem przy dziedziczeniu go nie nadpisywac , tak ?
Kurcze ktoredy droga (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  1. class User {
  2.  
  3. protected $user_id;
  4.  
  5. protected $db;
  6.  
  7. public function __construct($userid) {
  8.  
  9. $this->db = MultiBD:: getDefaultAdapter(); //instancja bazy danych
  10.  
  11. if(!empty($userid)) {
  12.  
  13. $this->user_id = $userid;
  14. }
  15. else {
  16.  
  17. $this->createAnonymousUser();
  18. }
  19.  
  20. return $this;
  21. }
  22. }
  23.  
  24.  
  25. $m = new UserManager('klucz', new User(123));


CRUD'em w tym wypadku jest User a UserManager tylko nim "steruje". Oczywiście User, może rozszerzać jakąś inną klasę w której będziesz trzymał podstawowe metody typu usuń, dodaj, zmień

Ten post edytował CuteOne 15.10.2011, 13:01:09
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: 12.10.2025 - 12:37