![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 2 Dołączył: 26.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Zaczynam przygodę z programowaniem obiektowym. Jako przewodnik służy mi książka 'PHP. Obiekty, wzorce, narzędzia' Matta Zandstry. Jednak nie mogę tam znaleźć jednoznacznej odpowiedzi na dość istotne pytanie. Wyobraźmy sobie hipotetyczną podstronę która ma wyświetlać różne artykuły z bazy danych. I tutaj nasuwa się pytanie: w jaki sposób powinna być skonstruowana? Czy jedna klasa, odpowiadająca za artykuły powinna je wyświetlać, edytować, dodawać etc. na podstawie parametru $id? Np.:
Czy może powinna istnieć osobna klasa reprezentująca jako taki artykuł. Mam tutaj na myśli sytuację w której z każdego pobranego artykułu tworzy się nowy obiekt:
I w tej sytuacji każdy artykuł jest osobnym obiektem. Które rozwiązanie jest lepsze? Odpowiedź na to pytanie myślę że dość mocno rozjaśni mi ideę OOP. (IMG:style_emoticons/default/wink.gif) Jeśli temat jest w nieodpowiednim dziale to proszę o przeniesienie do odpowiedniego. Pozdrawiam. Ten post edytował Barton 18.04.2012, 12:32:40 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Wyświetlanie i edycja to zadania dla zupełnie innej klasy, a w przypadku edycji nawet dla kilku klas, którym trzeba odpowiednie dane przekazać (chodzi o klasy widoku i formularza). Natomiast to co powinna realizować klasa artykułu to interakcja pomiędzy aplikacją a bazą danych - de facto jest to tzw. model danych, będący jednym z elementów wzorca MVC (model-widok-kontroler). Model ten, jak już wspomniałem powinien odpowiadać za interakcję/wymianę danych pomiędzy aplikacją a bazą danych, czyli:
To tak w wielkim skrócie, bo powyższej klasie jeszcze bardzo wiele brakuje. Natomiast wyświetlanie powinno już odbywać się w innym miejscu, a to zależy od architektury aplikacji (we wzorcu MVC wyświetlanie odbywa się w widoku, przy czym kontroler przekazuje do niego odpowiednie dane). Niemniej wyglądałoby to tak:
EDIT: Powyższa klasa i sposób jej wykorzystania to tylko przykłady, które w rzeczywistości wymagają jeszcze trochę (lub raczej dużo) pracy. Ten post edytował mortus 18.04.2012, 18:10:33 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.10.2025 - 20:22 |