Homepage Module
The Homepage module demonstrates Direct Mode (UseCase pattern) - the simplest architectural approach for read-only operations without complex business logic.
Architecture Mode: Direct Mode
Direct Mode uses the UseCase pattern where controllers invoke use cases directly, without routing through Command/Query buses. This is appropriate for:
- Simple read-only operations
- Pages without business logic
- Rapid prototyping
Implementation
The HomeUseCase implements UseCaseInterface:
final readonly class HomeUseCase implements UseCaseInterface
{
public function execute(UseCaseRequestInterface $request): UseCaseResponseInterface
{
$greeting = $request->userEmail
? sprintf('Welcome, %s', $request->userEmail)
: 'Welcome to CleanShelf';
return new HomeResponse($greeting, $messageOfTheDay, $currentDateTime);
}
}
Controller Flow
$request = new HomeRequest($userEmail);
$response = $this->homeUseCase->execute($request);
// Render template with $response data
When to Use This Pattern
- No domain events needed
- No transactions required
- Simple data retrieval or transformation
- No side effects
For operations requiring business rules, events, or transactions, use Bus Mode instead.
Routes
| Method | Path | Controller |
|---|---|---|
| GET | / | HomeController::index |
See Also
- Direct Mode - Architectural pattern used
- Use Cases - UseCase implementation pattern