Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php 5.1] Pisać osobne klasy czy dziedziczenie?
szczurek
post
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 1.10.2006
Skąd: Bydgoszcz

Ostrzeżenie: (10%)
X----


Witam,

Mam pytanie. Na stronie będę musiał zarządzać takimi częściami jak Uzytkownik, Autor, Utwor, Komentarz, News

No i dla każdego zamierzam napisać klasę z metodami tylko, że poza innimi metodami wszystkie zawierają wspólne:
  • doaj
  • pobierz
  • aktualizuj
  • usun

Jeszcze sprawdz dane, ale to będzie na pewno metoda prywatna.

Zastanawiam się czy mam kombinować z napisaniem jakiejś klasy zawierającej te 4 metody i później klasy uzytkownik, autor itd. Mają dziedziczyć z tej klasy modyfikując właściwie pola które dodają czy pobierają czy każda klasa ma zawierać pisane od początku metody i tylko mają implementować interface który zawiera abstrakcyjne metody dodaj, pobierz, aktualizuj i usun.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
athabus
post
Post #2





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

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


Musisz zadać sobie pytanie: "po co ja chcę to zrobić". Użycie interfejsu ma sens jeśli chcesz ujednolicić interfejs - jeśli natomiast to nie jest Twoim celem to jest to używanie mechanizmów obiektowych "na siłę".

Wspólny interfejs jest po to aby potem np. pisać metody, które jako parametr mogą brać obiekty implementujące dany interfejs

np.

  1. <?php
  2. class a
  3. {
  4.  
  5. public static function (ICRUD $obj)
  6. {
  7. //ta metoda moze wykonac operacje na dowolnym obiekcie implemetujacym interfejs IC
    RUD
  8. }
  9. }
  10. ?>


W twoim wypadku, jeśli każda metoda bierze inne parametry trudno będzie pisać taki kod, bo w zasadzie nic poza nazwą nie jest wspólne. Tak jak pisałem wcześniej i to co pisze dr_bonzo - możesz zastosować wzorzec ActiveRecord - ale napisanie dobrej klasy tego typu jest dość trudne. Może popatrz jak robili to inni.
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: 14.10.2025 - 02:12