![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Witam
![]() Tworzę sobie klasę do zarządzania użytkownikiem, czyli dodanie, kasowanie, wyświetlenia loginu i póki co hasła, chciałem Was jako bardziej doświadczonych speców, zapytać czy wszystko jest dobrze w kodzie. Proszę również o ocenę podziału, zarządzania użytkownikiem na 2 klasy, z których każda robi co innego. UserManager.php
User.php
Ten post edytował ExPlOiT 18.07.2011, 19:00:19 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 471 Pomógł: 89 Dołączył: 29.07.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
nie rozumiem dlaczego kazdy "user" samodzielnie laczy sie z baza i ma prywatne polaczenie
oprocz tego nie rozumiem czym sie rozni "manager" od "usera", skoro w obu przypadkach traktujesz te klasy tylko jako interfejs do laczenia sie z baza, a nie np. klasy dla samodzielnych obiektow konkretnych uzytkownikow Ten post edytował yevaud 18.07.2011, 18:40:07 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Z tą bazą akurat tymczasowo, chodzi mi o resztę kodu
![]() Co do podziału User i UserManager, sugerowałem się wypowiedzą Crozin-a, z tego postu: http://forum.php.pl/index.php?s=&showt...st&p=880097 chyba, że go źle zrozumiałem. Ten post edytował ExPlOiT 18.07.2011, 18:43:54 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Ty hasło trzymasz plaintekstem...?
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
md5
![]() |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
raz dajesz echo raz exception przy try...
new pdo wywal po za klasy. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Spawnm echo poprawione
![]() Ten post edytował ExPlOiT 18.07.2011, 19:05:25 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Jak dla mnie obie klasy powinny przyjmować jako parametr uchwyt do pdo - to raz.
Dwa klasa user - powinna w konstruktorze przyjmować id użytkownika jak dla mnie - przynajmniej wygląda, że byłoby lepiej. getUsername - w obecnym przypadku powinno być raczej getUsernameByID -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Wymodziłem coś takiego:
Klasa DB
I działa dobrze ![]() Ten post edytował ExPlOiT 18.07.2011, 20:16:50 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
Zainteresuj się frameworkami. Taka dobra rada.
Jak dajesz private/protected to rozpoczynaj nazwę od _ czyli private $_db; Poczytaj o bindColumn() w pdo. Jeśli chodzi o pytanie czy dzielić na kilka klas czy posiadać jedną której zadaniem będzie zarządzanie userami, to już sam musisz zdecydować jak ci wygodniej. |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję za rady
![]() Wiem, że znając bardzo dobrze danego frameworka idzie bardzo szybko napisać aplikację, bo sam się o tym przekonałem. //Kod poprawiłem |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 24.05.2012 Ostrzeżenie: (10%) ![]() ![]() |
Witam,
troche odkurzę temat... Przepraszam ze znow będzie pytanie "czy dobrze robie" ale jestem na etapie nauki OOP w PHP. Moim zamiarem bylo stworzenie klasy która bedzie miala za zadanie skrócenie sobie pisania bloku "try {} catch {}". Nie wiem czy to co wymodziłem w ogole się nadaje do zastosowania (ogólnie to mi działa tak jak założyłem) ale chcialbym sie dowiedzieć czy nie zrobiłem jakichś rażących błędów.
a używam tego tak:
I wszystko wygląda jakby chciało działać ![]() Dzieki za wszystkie uwagi. Ten post edytował fullrespect 16.10.2012, 22:43:05 |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 304 Pomógł: 51 Dołączył: 4.02.2005 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Aby uzyskać podobny efekt wystarczy nie wywoływać poniższej linijki w konstruktorze i usunąć wszystkie instrukcje try catch.
Ten kod, który podałeś jest idiotyczny, wyrzuć go - nie żartuję. Jeśli się uczysz OOP to musisz się nauczyć stosować wyjątki i musisz zrozumieć ich przewagę nad tradycyjną obsługą błędów, która jest stosowana w całej bibliotece standardowej php ze względu na zaszłości historyczne. -------------------- |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 24.05.2012 Ostrzeżenie: (10%) ![]() ![]() |
OK, rozumiem że powinno używać się wyjątków (z tego co się orientuje to PDO ma swoje wyjątki i dlatego ich używam).
Poczytałem http://pl.wikibooks.org/wiki/PHP/Wyj%C4%85tki i tam piszą tak: Cytat Obsługę wyjątków posiada jedynie kilka najnowszych, obiektowych modułów: Standard PHP Library Biblioteka PHAR Biblioteka PDO Nie rozumiem czemu mam się pozbyć bloku try, catch ? Nawet na php.net jest to stosowane: http://www.php.net/manual/pl/language.exceptions.php Albo coś pominąłem albo nie mam zielonego pojęcia co ja robię tu ![]() |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 304 Pomógł: 51 Dołączył: 4.02.2005 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Usuwając bloki try catch miałem na myśli metody klasy DbManager. Bloki try catch powinny być w kodzie klienta obiektu DbManager. Twój kod jest bardzo zły bo nie mamy kontroli nad tym czy wystąpił błąd. Wywołując poszczególne metody nie wiemy czy nie spowodowała ona błędu. Przykładowo:
Można poprawić ten kod poprzez zwracanie jakieś określonej wartości w przypadku błędu, zazwyczaj jest to wartość false lub -1 (czasy C oraz php przed pojawieniem się wyjątków ![]()
To rozwiązanie już jest odrobinę lepsze, ale minusem jest to że kod obsługi błędów jest wymieszany z kodem prawidłowego przebieg programu, błąd obsługiwać trzeba natychmiast po wywołaniu metody oraz jest pełno instrukcji warunkowych i powtórzeń kodu obsługi błędów. Ostatnie rozwiązanie to wyjątki, jeśli wystąpił błąd to rzucaj wyjątkiem.
-------------------- |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Tylko po co te nakładki? Tylko po to, aby kod był "krótki" ? I dane połączenia tworzą się same w konstruktorze?
-------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 24.05.2012 Ostrzeżenie: (10%) ![]() ![]() |
@-=Peter=-
Dzieki za wskazówki i pięknie przedstawiony kod. Ale wychodzi na to ze now musze klepac try {} catch {} na kazdym kroku... A moze polecice jakis artykól o wyjątkach i ich traktowaniu ? Ten post edytował fullrespect 20.10.2012, 01:13:19 |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
A moze polecice jakis artykól o wyjątkach i ich traktowaniu ? http://pl.wikibooks.org/wiki/PHP/Wyjątki -------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 15 Dołączył: 12.08.2012 Skąd: Zabrze Ostrzeżenie: (10%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 07:03 |