![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 14.10.2019 Skąd: Białystok Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
Zaczynam naukę OOP i w napisałem skrypt który umożliwia rejestracje/logowanie/zwrot/wypożyczenie książek. Mam świadomość istnienia SOLID oraz PSR - czytałem o PSR 1 / 2 i staram się przestrzegać. Nie znam MVC ani testów np. PHPUnit - to będą kolejne kroki w nauce. Czy taki skrypt można określić obiektowym, czy jest to jakaś hybryda? Zanim pójdę dalej jw chciałbym nauczyć się dobrych nawyków i w prawidłowy sposób posługiwać się OOP. Skrypt nie wszedł na forum, umieściłem na githubie Link do GitHub Moje dodatkowe pytania: 1. Tworzenie obiektu Database w konstruktorze innych klas, czy jest to prawidłowe? 2. Metoda checkCredentials klasy log - czy nie narusza zasady pojedynczej odpowiedzialności? Czy nie powinna np. wyszukiwać użytkownika,a następnie inna metoda powinna weryfikować dane? Dzięki za wszystkie uwagi i poświęcony czas (IMG:style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Njapierw klasa dziedziczy po Database
class RegistrationForm extends Database A potem ta sama klasa w konstruktorze dostaje obiekt Database public function __construct(Database $connection) Rozumiem, ze zapomniales usunac extednds Database ? Klasa Database
powinna byc niezalezna od jakiegos tam konfigu. Dane konfiguracyjne powinna dostac w konstruktorze Klasa Database
Powinna raczej pluc wyjatkiem na zewnatrz w przypadku braku polaczenia a nie tlumic go wewnatrz siebie. Teraz tak to masz zrobione,ze pomimo braku polaczenia, inne klasa odpalaja zapytania na polaczeniu, ktorego moze teoretycznie nie byc rowCount a nie rowcount To samo dotyczy wywolan metody rowCount z PDO. staraj sie czasami czytac co piszesz, np to: $log->getIsLoged() nie ma wiekszego sensu. Czy jak sie pytasz kogos, czy ma bulke to mowisz tak: "Daj mi czy masz bulke" Czy moze tak: "Masz bulke?" Tak samo tutaj powinno byc poprostu $log->isLoged() Juz nie wspomnie o braku jednego "g" Powinienies miec jeden plik glowny/publiczny przez ktory przechodza wszystkie akcje, np index.php i on dopiero powinien odpalac poszczegolne akcje i inicjowac mase niezbednych rzeczy. Teraz masz 6 plikow glownych a w kazdym polowa kodu jest powtorzona Naprawde nie musisz wszystkieg pchac w php. Np ten plik
Moze wygladac tak:
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 02:01 |