![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 273 Pomógł: 21 Dołączył: 28.11.2010 Ostrzeżenie: (10%) ![]() ![]() |
piszę sobie coś obiektowo i mój index wygląda mniej więcej tak:
i teraz pytanie - dobrze to jest napisane? chodzi mi o samą logikę aplikacji... klasa silnik.php wygląda tak:
w dobrym ide kierunku? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 10 Dołączył: 13.02.2007 Skąd: Rybnik Ostrzeżenie: (0%) ![]() ![]() |
W złym. Od tego jest framework - czyli Symfony czy też Zend (wiem, wiem są jeszcze inne równie dobrze, ale nie o to tutaj chodzi).
Po co chcesz wynajdować koło od nowa? Stanowczo w złym kierunku idziesz. Zajmij się logiką aplikacji, a nie tym, co ma ją obsługiwać - to zostaw profesjonalistom, którzy pracują nad tym latami i wiedzą w jaki sposób ma to wszystko działać. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
W złym.
1. Nie trzymasz się konwencji nazewnictwa. Co to za dziwny pomysł by w pliku silnik.php (już mieszanie polskiego i angielskiego pomińmy) znajdowała się klasa API? - jej nazwa swoją drogą też powala. 2. http://en.wikipedia.org/wiki/Single_responsibility_principle 3. Korzystaj z mechanizmów automatycznego ładowania. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 273 Pomógł: 21 Dołączył: 28.11.2010 Ostrzeżenie: (10%) ![]() ![]() |
to tylko przykład był :/
Crozin, możesz jaśniej o pkt 3? |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 1 Dołączył: 11.02.2011 Ostrzeżenie: (0%) ![]() ![]() |
Jak dla mnie trochę popsuta hermetyzacja.
Metody doContent() i protect() klasy API odpowiadają dość różnym zadaniom. Nie powinno się projektować klasy, która robi zbyt wiele rzeczy na raz. Generalnie 1 rzecz = 1 klasa. Zbyt obszerna klasa przestaje mieć coś wspólnego z obiektówką, a staje się bardziej "modułem", tzn. czymś w rodzaju "przestrzeni nazw" dla strukturalnego zbioru funkcji. Czemu to złe? Chcesz np. coś zmienić w protect(). Być może protect() działa w prozumieniu z jakimś polem prywatnym, powiedzmy $prot. Ale czy $prot nie jest używana gdzieś w doContent()? Tego już nie jesteś pewien. Aby zmodyfikować jedną funkcjonalność muisz analizować kod, który nie ma z nią związku. Nie temu służy idea programzowania obiektowego. Te Twoje API robi za kontroler, walidator (unieszkodlwiajacy niebezpieczne stringi - ale na co: HTML, SQL?) i za model, np. zarządza użytkownikami tak:
A przecież gdy myślimy obiektowo, to aż się prosi by użytkownikowi odpowiadała osobna klasa. W złym. Od tego jest framework - czyli Symfony czy też Zend (wiem, wiem są jeszcze inne równie dobrze, ale nie o to tutaj chodzi). Po co chcesz wynajdować koło od nowa? Kolega pisał: "dobrze to jest napisane? chodzi mi o samą logikę aplikacji...". Przecież coś nie może być napisane źle i nielogicznie tylko dlatego, że nie używa framewroka. Co innego, gdy rozważymy cel tego pisania. Mały, duży system. Nauka, praca, hobby? Dojdzie ktoś do zespołu itd. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 273 Pomógł: 21 Dołączył: 28.11.2010 Ostrzeżenie: (10%) ![]() ![]() |
KKH, wreszcie coś do mnie trafiło jeśli chodzi o oop, za co wielkie dzięki.
Tylko teraz pytanie; przyczepiłeś się do:
nie rozumiem jak można to inaczej zapisać... jedynie co mi przychodzi na myśl to:
i w tym pliku dać sprawdzanie sesji i ew. opcje (jeśli zalogowany) teraz z innej półki - czepiacie się html'a w kodzie i jak najbardziej wiem, że to racja, ale jak inaczej to zapisać? stworzyć plik np. error.php i:
tak? i jeszcze jedno - jak zaimplementować nową klasę w klasie tylko raz?
w którym miejscu to dodać? jak dam nad klasą to jej nie wykrywa, jak dam w konstruktorze także... oczywiście includuje ją wcześniej. Teraz muszę w każdej metodzie dodawać to $klasa = new KLASA; a przecież to jest bezsens.. #edit; __autoload mi pomoże (IMG:style_emoticons/default/biggrin.gif) (IMG:style_emoticons/default/biggrin.gif) (sory wookieb) Ten post edytował emajl22 13.02.2011, 20:09:41 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%) ![]() ![]() |
Lepiej zajmij się nauką jakiegoś frameworka, np. Symfony 2. Bez doświadczenia nie napiszesz dobrego systemu, a to co robisz to zwyczajna strata czasu.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 14:27 |