Wzorce projektowe – CQRS (Command Query Responsibility Segregation)
Założenie: Zrozumieć podstawy wzorca projektowego CQRS w PHP poprzez prosty przykład.
Krok po kroku:
- Definicja interfejsów: Stworzymy dwa interfejsy: jeden dla komend (operacje modyfikujące) i drugi dla zapytań (operacje pobierające).
- Implementacja komendy: Stworzymy klasę implementującą interfejs
Command
, która będzie dodawać użytkownika do bazy danych (symulacja). - Implementacja zapytania: Stworzymy klasę implementującą interfejs
Query
, która będzie zwracać listę użytkowników (symulacja). - Wywołanie komendy i zapytania: Wywołujemy komendę i zapytanie.
interface Command {
public function execute();
}
interface Query {
public function execute(): mixed;
}
Te interfejsy definiują kontrakty dla naszych klas komend i zapytań.
class AddUserCommand implements Command {
private string $name;
public function __construct(string $name) {
$this->name = $name;
}
public function execute(): void {
// Symulacja dodania użytkownika do bazy danych
echo "Dodano użytkownika: " . $this->name . "\n";
}
}
Klasa AddUserCommand
przyjmuje imię użytkownika i symuluje dodanie go do bazy danych.
class GetUsersQuery implements Query {
public function execute(): array {
// Symulacja pobierania użytkowników z bazy danych
return ["Jan", "Anna", "Piotr"];
}
}
Klasa GetUsersQuery
symuluje pobranie listy użytkowników.
$command = new AddUserCommand("Maria");
$command->execute();
$query = new GetUsersQuery();
$users = $query->execute();
print_r($users);
Ten kod pokazuje, jak wywołać komendę i zapytanie. Każda operacja jest wyraźnie oddzielona.
Ten przykład prezentuje podstawowe założenia wzorca CQRS. Zachęcamy do dalszego zgłębiania tematu i poznawania bardziej zaawansowanych zastosowań tego wzorca.