Rejestracja użytkowników na stronie – Struktura

362
views

Dzisiejszy post będzie uzupełnieniem do wpisu sprzed tygodnia, w którym była mowa głównie o użytkownikach. Będąc nadal w niższych warstwach aplikacji, tym razem opiszę proces rejestracji nowych użytkowników.

Factory

W poprzednim poście była mowa o tym, że encja User, składa się również z bloków będącymi implementacją ValueObject. Dlatego aby zapewnić, że inicjalizowanie klasy User będzie się odbywało zawsze poprawnie należy utworzyć metodę fabrykującą, która w tym pomoże.

Do metody createUser przekazujemy dwa parametry: tablicę $data, zawierająca dane, które będą pochodzić z formularza uzupełnianego przez użytkownika, oraz obiekt typu PasswordPolicy. Zwracana jest instancja klasy User. Wewnątrz metody, podczas inicjalizacji obiektów UserName oraz UserEmail następuje walidacja, która w razie niezgodności rzuca wyjątek, który powinien być przechwycony na wyższych warstwach aplikacji.

Repository Pattern

Repozytorium jest kolekcją elementów danego typu. Dodaję interfejs UserRepository, którego będą implementować w przyszłości klasy na wyższej warstwie aplikacji posiadające informacje o typie bazy danych i komunikacji z nią. Na tę chwilę zadanie jest bardzo proste – dodać nowego użytkownika do kolekcji.

Service

Serwis RegistrationService stanowi most między warstwą bliższą użytkownikowi końcowemu, a warstwą domenową.

Serwis będzie inicjalizowany w odpowiednym kontrolerze, a jako parametry konsruktura przekazywane będa już konkretne implementacje UserRepository oraz PasswordPolicy. Po wywołaniu metody register zostanie utworzony nowy obiekt User dzięki uprzednio dodanej fabryce UserFactory, a następnie obiekt ten zostanie przekazany do kolekcji UserRepository (docelowo ma to być zapis do bazy danych).