![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 273 Pomógł: 21 Dołączył: 28.11.2010 Ostrzeżenie: (10%) ![]() ![]() |
Postanowiłem wziąć się na poważnie za programowanie obiektowe i stworzyłem swoją pierwszą klasę. Przeczytałem chyba wszystkie artykułu na temat programowania obiektowego, ale nadal czuję, że to nie jest jeszcze to.
Chciałem napisać klasę - system artykułów, zacząłem tak:
A tak sobie tego używam:
Chciałbym się dowiedzieć co o tym sądzicie, czy dobrze zacząłem to pisać czy nie. Aha i możecie podpowiedzieć co w takiej klasie powinno się znajdować, a co nie. Będę wdzięczny za wszystkie podpowiedzi ![]() Ten post edytował emajl22 8.03.2011, 12:36:30 -------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Moim zdaniem źle do tego podszedłeś. Pomyśl logicznie: dlaczego obiekt "artykuł" ma mieć możliwość np. usuwania się? W klasie Article trzymałbym informacje o artykule (czyli np. tytuł, treść). Jako metody stworzyłbym takie metody, które operują bezpośrednio na obiekcie (np. get_short_content()). Mechanizm dodawania/usuwania/edycji artykułów przeniósłbym do klasy modelu, np. Article_Model. Dla przykładu: metoda Article_Model::get_by_id($id) pobierałaby z bazy danych dane artykułu na podstawie jego id i zwracała je w postaci obiektu klasy Article. Wtedy miałoby to ręce i nogi
![]() Poza tym zadbaj o bezpieczeństwo. Przykładowo: jeśli do metody usuwającej artykuł jako parametr przekażemy 1' OR 'x' = 'x to polecą nam wszystkie rekordy z tabeli. Ja osobiście w przypadku przekazywania identyfikatorów stosuję po prostu rzutowanie na liczbę całkowitą ((int)$id). |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 273 Pomógł: 21 Dołączył: 28.11.2010 Ostrzeżenie: (10%) ![]() ![]() |
Pomyśl logicznie: dlaczego obiekt "artykuł" ma mieć możliwość np. usuwania się? Przecież nie usuwam obiektu, tylko artykuł z bazy danych. Chyba, że źle zrozumiałem? :/ Poza tym zadbaj o bezpieczeństwo. Przykładowo: jeśli do metody usuwającej artykuł jako parametr przekażemy 1' OR 'x' = 'x to polecą nam wszystkie rekordy z tabeli. Wiem o tym, ale to robię przed wrzuceniem tego do metody, np:
Ten post edytował emajl22 8.03.2011, 13:01:15 -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ ![]() |
Pytanie: każdy obiekt będzie wywoływał nowe połączenie z bazą? I tak swoją drogą... masz obiekt, który nie robi niczego innego jak zwykłe operacje na bazie danych. Phpion dobrze zasugerował Ci oddzielenie logiki biznesowej. Może warto pomyśleć o akcesorach?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 273 Pomógł: 21 Dołączył: 28.11.2010 Ostrzeżenie: (10%) ![]() ![]() |
Nie mówię, że nie macie racji, ale do końca nie wiem o o chodzi z tym modelem :/ Może ktoś jaśniej na ten temat?
i to prawda, że w klasach nie powinno się nic echo'wać? -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ ![]() |
Model - logika biznesowa, czyli operacje na danych. I tak swoja drogą pozwolę sobie zalinkować do Zyxa, jest tam nieźle opisane MVC
![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
co ma piernik do wiatraka, a wlasciwie klasa do MVC?
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ ![]() |
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 09:18 |