EventFactory
in package
EventFactory - Transforms raw database data into Event entities
This factory class acts as a translator between the database layer (PDO arrays with column names) and the domain layer (Event entities).
Responsibilities:
- Hydrate Event entities from PDO result arrays
- Handle type conversions (string to int, int to bool, etc.)
- Provide clean, type-safe entities to controllers
Design Pattern: Factory Pattern Related to: Data Mapper Pattern
Tags
Table of Contents
Methods
- createCollectionFromDatabase() : array<int, Event>
- Create multiple Event entities from database result set
- createFromDatabase() : Event
- Create an Event entity from database row data
- toDatabase() : array<string, mixed>
- Convert an Event entity back to database-ready array
Methods
createCollectionFromDatabase()
Create multiple Event entities from database result set
public
static createCollectionFromDatabase(array<int, array<string, mixed>> $dataSet) : array<int, Event>
Batch version of createFromDatabase for paginated results. Useful when retrieving multiple events from findAll() or findPaginated().
Parameters
- $dataSet : array<int, array<string, mixed>>
-
Array of database rows
Return values
array<int, Event> —Array of hydrated Event entities
createFromDatabase()
Create an Event entity from database row data
public
static createFromDatabase(array<string, mixed> $data) : Event
Transforms a raw PDO array (from EVENTS table) into a clean, type-safe Event entity. Handles all type conversions and ensures data integrity.
Database columns mapping:
- event_id → id (int|null)
- event_name → name (string)
- slug → slug (string)
- event_date → date (string, Y-m-d format)
- event_time → time (string, H:i format)
- event_location → location (string)
- event_theme → theme (string)
- status_participating → statusParticipating (string)
- description → description (string)
- images → images (string, JSON)
- is_group_event → isGroupEvent (bool)
- team_size → teamSize (int)
Parameters
- $data : array<string, mixed>
-
Raw database row from EVENTS table
Return values
Event —Hydrated Event entity
toDatabase()
Convert an Event entity back to database-ready array
public
static toDatabase(Event $event) : array<string, mixed>
Useful for UPDATE and INSERT operations. Transforms the entity back into an array format compatible with PDO prepared statements.
Note: This method excludes the ID for INSERT operations (handled separately).
Parameters
- $event : Event
-
Event entity to convert
Return values
array<string, mixed> —Database-ready associative array