![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 0 Dołączył: 5.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Temat pewnie wam znany i stary jak swiat. Pisze sobie swoj cms starajac sie zrobic to obiektowo. Dotychczas przejrzalem i przeczytalem wiele artykulow dotyczacych OOP i robie sie coraz glupszy bo z tego co rozumie to zastosowan jest multum, tylko ktore to najlepsze. mam taka klase
Pierwsze pytanie : Czy klasa User powinna miec funkcje takie jak Loguj, Rejestruj, Edytuj, Zmien Haslo i czy te funckje powinny miec juz "hardcoded" zapytania do bazy wewnatrz, patrz funckja loguj();. Wywoluje ja tak:
Jezeli cos tego pokroju jest ok to spoko. Teraz np dopisalem sobie taka funkcje to tej samej klasy, ktora jak dla mnie moglaby byc w kazdej prawie innej klasie :
Dzieki tej funkcji lapie sobie wszystko z bazy i w prosty sposob moge wywolywac wszystkie kolumny :
Bardzo podoba mi sie mozliwosc poboru rekordow i nazw wierszy tabeli w tak prosty sposob. Teraz do rzeczy : Funckja ta jest w Users ale generalnie moglaby byc w prawie kazdej innej klasie, np Products, Articles itp. Czy mam utworzyc osobna klase z ta funckja z ktorej jakos beda kozystac wszyskie inne klasy ? Czy ma byc to w klasie bazy danych, czy moze w jakies jeszcze innej ? Prosze o odpowiedzi i wyrozumialosc (IMG:style_emoticons/default/smile.gif) Ten post edytował rahul 20.08.2011, 20:50:56 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 11 Dołączył: 7.04.2003 Ostrzeżenie: (10%) ![]() ![]() |
Chciał bym się odnieść do paru perełek:
1. Metody magiczne __get(), __set(), __call() etc są ZŁE. Złe jak Adolf Hitler i koniec tematu. 2. Padło zdanie że przy takich metodach jest mniej parsowania (rozumiem ze autor uważa ze jest szybciej). Prawda jest taka że te metody są kilka razy wolniejsze od swoich zwyczajnych odpowiedników. Samo czytanie pliku z kodem zajmuje niewielki ułamek czasu w stosunku do wykonywania kodu + prasowanie idzie jeden raz na Request, wykonywanie może iść wielokrotnie. Tak że może zaoszczędzisz 0.00001s na parsowaniu ale potem tracisz 0.005 s podczas wykonania skryptu. 2. To ze IDE podpowiada ze istnieje metoda __get() i __set() to żaden argument. Programistę interesuje to jakie KONKRETNE metody/zmienne ma obiekt a nie to czy dany obiekt korzysta z magii czy nie. Jeżeli obiekt kożysta z magi to patrz punkt 1. --- Ok niedopatrzylem i widze ze twoje IDE podpowiada tez zmienne więc tu mnie masz (IMG:style_emoticons/default/smile.gif) --- 3. Parameters bag uzyty w Symfony2 jest bardzo specyficznym obiektem, który zbiera dane z $_REQUEST. $_REQUEST jest w PHP tablicą. To jest wyjątkowa sytuacja więc usprawiedliwia ona wyjątkowe podejście. Nie należy z tego generalizować żadnych wniosków na temat seterów i geterów, magii czy czegokolwiek. Warto jeszcze dodać że getery i settery dla obiektów typowo biznesowych. Np dla obiektów perzystentnych czyli takich które chcemy zapisać do bazy. W obiektach nie nie biznesowych powinniśmy unikać getterow i setterow. Ten post edytował smentek 24.08.2011, 20:22:40 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 02:12 |