I'm seeking clarification on whether to put code in a controller, an entity or to make a service.
I have 'cardset' and 'card' objects (where many of the latter are embedded in the former, MongoDB), represented by normal PHP classes/objects. These contain attributes e.g. 'id', 'postal_address'.
I have a method that generates a PDF of a card. Currently I have that inside the 'Card' object so from a Controller I can call:
$card->makePDF()
That seems clean and OO to me, but I suspect I'm wrong.
If I put all the logic in the controller that gets long and unwieldy, and I'm not sure the controller is the place for methods that act on my objects. Is that what services are for?
To try and summarise: should an object know all the regular things it could do 'to itself' and have them inside as member functions, or should methods elsewhere be passed the object to act upon. If so, where should those methods be kept?
I'm pretty sure it's not a 'Repository' because that just seems to help retrieve/store entities.
Thanks!
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…