Uso laravel con pattern di repository.
La mia strucuture del progetto è:
Ho una Entity
class ( POPO
) che implementa un Interface
e ha un repository class
relativo ad esso.
Ad esempio per User Entity
, ho:
App\Entities\User
- Classe entità
App\Repos\User
- Repository
classe
App\Interfaces\User
- interfaccia
La maggior parte delle azioni nel sistema di solito avvengono all'interno della classe di servizio.
Ad esempio: per un processo di pagamento, ho un servizio chiamato Pay
. Per completare un pagamento, questi sono i metodi che potrei chiamare
$pay = new \App\Services\Pay;
$pay->asUser($user); //a user object
$pay->forItem($product); // a product class
$pay->pay(); //actually paid
Sono contento di questa implementazione e finora funziona benissimo.
Una cosa su cui posso vedere un miglioramento è la lunghezza del Entity Class
. Ad esempio, la classe User
ha circa 15 proprietà e tutte hanno una setter
e una getter
, (non voglio che le proprietà siano pubblicamente accessibili), il che rende il 30% dimethods
e un po 'di% diactions and additional getters
. Alcuni esempi potrebbero essere: getInactiveUsers
, getActiveUsers
, registerAsAdmin
ecc. Ciò rende queste entità di classe enormi. Alcune entità attraversano 1000 linee.
Sono grandi all'inizio a causa di getters and setters
Vorrei mantenere il logics or queries
direttamente correlato agli utenti di questa classe.
Come posso mantenere queste lezioni brevi e concise?