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?