Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> metody i ich przeznaczenie
bliitz
post
Post #1





Grupa: Zarejestrowani
Postów: 155
Pomógł: 12
Dołączył: 5.04.2008

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


Witam

Mam pytanie odnośnie zasady tworzenia metod w klasach, przykładowo mamy następujący scenariusz. Tworzymy klasę Artykuły a w niej metody ( lub metodę ? ) odpowiedzialną(e) za pobranie wszystkich artykułów oraz tylko jednego artykułu.
Teraz moje pytanie czy lepiej stworzyć dwie metody np:
  1. get_article( $id )
  2. {
  3.  
  4. }
  5.  
  6. all_article()
  7. {
  8.  
  9. }


Czy może stworzyć jedną metodę, która w zależności od wystąpenia określonego parametru pobierze wszystkie artykuły bądź tylko jeden, np:

  1. articles( $all = NULL )
  2. {
  3.  
  4. }


Który z przedstawionych scenariuszy jest zgodny z kanonem programowania OOP, czy może jest na to jeszcze inny sposób?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Jak przykładową? Nie chce mi się teraz wycinać kodu, pokażę, jak mniej więcej z niej korzystam;
  1. $art = model('article')->getAll();
  2.  
  3. // ...
  4.  
  5. foreach($art as $a){
  6. echo $art['title'];
  7. }
  8.  
  9. $art['title'] = 'asdasd';
  10. $art->save();


Przesuwanie - funkcje iteratora (z których korzysta przecież foreach), odczyt danych z rekordu - offsetGet, zapis offsetSet.

Jeśli chodzi o filtrowanie, czy jakieś zaawansowane operacje, nikt nie zabroni przecież użyć dodatkowych metod (np. getCostam, która działa na wewnętrznym wskaźniku rekordu i zwraca, co trzeba). Jedna klasa abstrakcyjna, która odpowiada za I/O z bazy + dziecko, które przechowuje strukturę bazy i dodatkowe metody.

A filtry można przecież zrobić przeciążając metody iteratora z klasy abstrakcyjnej. (IMG:style_emoticons/default/winksmiley.jpg)
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: 15.10.2025 - 03:54