![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 5 Dołączył: 6.02.2009 Skąd: Gorzów Wlkp. Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Czy mógłby ktoś przejrzeć kod i wytknąć mi moje błędy?
Później wykorzystuje to na przykład tak:
Początek mam dobrze, bo patrzyłem z manuala, chodzi mi o te 2 metody. Ten post edytował julek12 20.11.2009, 08:47:48 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Po pierwsze rezygnujesz z obsługi wyjątków (masz PDOException, a zamieniasz to na die() ), co oznacza cofnięcie się.
Po drugie zastosowanie tego jest bardziej problematyczne niż samego PDO. Niby zamiast 5-ciu linii kodu masz jedną, tylko czytelność jest o wiele mniejsza. Przydałoby się dorobić sprawdzanie podanych parametrów. Bo przykładowo, jeśli ktoś się pomyli i w zmiennej $fields czy $conditions przekaże tablicę pól? Twój skrypt się wysypie i to niezłapanym wyjątkiem PDO. Może i Tobie w jakiś sposób to ułatwi pracę, znasz dokładnie strukturę kodu, wiesz co możesz podać w parametrach, czego nie. IMHO ktokolwiek chciałby użyć tej "klasy" w swoich projektach to mógłby się zdziwić i łatwo zdenerwować. Według mnie taka klasa nie ma zastosowania, jest niepotrzebna, wprowadza tylko niepotrzebny zamęt. W przypadku rozwoju Twojego kodu przez kogoś innego - będzie miał z tym problem. W przypadku rozwoju cudzego kodu przez Ciebie - będziesz miał doświadczenie, nawyki z rozwiązaniem nigdzie nie stosowanym, a braki w tych powszechnych. Widzę, że chciałeś na szybko zrobić coś a'la ORM. Lepiej już chyba zastosować Doctrine/Propel niż robić takie kwiatki. Ale to tylko moje subiektywne zdanie (IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 5 Dołączył: 6.02.2009 Skąd: Gorzów Wlkp. Ostrzeżenie: (0%) ![]() ![]() |
czyli tu:
wstawić echo zamiast die tak? Klasa będzie wykorzystywana tylko przeze mnie. A co do nieczytelnego kodu to był tylko przykład normalnie robie sobie takie coś:
Ten post edytował julek12 20.11.2009, 09:00:29 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Żadnego echo w klasach. Exception, myślisz czemu takie PDO nie korzysta echo tylko PDOException?
Jeśli zechcesz pobrać dane do zmiennej, a zmienną użyć gdzieś dalej w kodzie, to jeśli masz echo to popsuje Ci to skrypt. Exception wyłapujesz a wyświetlasz kiedy chcesz i jeśli chcesz. Jeśli tylko Ty, to robisz tak jak jest Tobie najwygodniej. Ja bym np dał możliwość podawania pól jako tablicę, a nie tylko jako ciąg. Może się przecież zdarzyć, że listę pól pobierzesz z bazy i będziesz miał jako tablicę. Lepiej to oprogramować w klasie raz niż za każdym razem w skrypcie.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 5 Dołączył: 6.02.2009 Skąd: Gorzów Wlkp. Ostrzeżenie: (0%) ![]() ![]() |
To nie będzie działać:
ponieważ to catch łapie te throw new Exception, a tu:
je wyświetla więc musi być tu coś do wyświetlanie tych wyjątków print, echo, return. I teraz co z tego użyć return? Ten post edytował julek12 20.11.2009, 12:00:13 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Cytat To nie będzie działać: Jesteś pewien?Chyba nie poczytałeś o wyjątkach. Kod który podałem: 1. Łapie PDOException jeśli wystąpi 2. Pobiera tekstowy opis wyjątku ($exception -> getMessage()) 3. Wyrzuca własny (Exception) wyjątek, który możesz wyłapać dalej w kodzie Np:
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 5 Dołączył: 6.02.2009 Skąd: Gorzów Wlkp. Ostrzeżenie: (0%) ![]() ![]() |
zastosowałem twój kod i działa.
i zmieniłem to:
na to:
Dobrze? |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
No tak już lepiej:)
Konstruktor niepotrzebnie zwraca true, możesz to usunąć. Poza tym i tak obejmujesz to w blok try - catch. Więc jeśli nie wystąpi wyjątek - znaczy, że wszystko jest ok. (btw. konstruktor nic nie zwraca) A skoro już wrzucasz to w blok try-catch, to może zmień też tutaj:
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 5 Dołączył: 6.02.2009 Skąd: Gorzów Wlkp. Ostrzeżenie: (0%) ![]() ![]() |
W destruktor coś zwraca czy nie?
Ten post edytował julek12 21.11.2009, 12:59:08 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 26.08.2025 - 23:33 |