Je suis actuellement en train de reconstruire un système de ticket spécialisé au travail (principalement utilisé pour soutenir les personnes ayant des défauts dans le matériel de télédétection ...). Quoi qu'il en soit, je me demandais si faire beaucoup d'activité de type workflow dans le constructeur d'un objet est une bonne idée.La logique métier dans les constructeurs est-elle une bonne idée?
Par exemple, il est actuellement ceci:
$ticket = new SupportTicket(
$customer,
$title,
$start_ticket_now,
$mail_customer
);
dès que l'objet est créé, il va mettre une ligne dans une base de données, rendez-vous et l'envoyer au client un e-mail de confirmation, peut-être envoyer un message texte au technicien le plus proche, etc.
Est-ce qu'un constructeur doit déclencher tout ce travail, ou quelque chose comme ce qui suit?
$ticket = new SupportTicket($customer, $title);
$customer->confirmTicketMailed($ticket);
$helpdesk->alertNewTicket($ticket);
Si elle aide, les objets sont tous basés sur le style ActiveRecord.
Je suppose que c'est peut-être une question d'opinion, mais que pensez-vous être la meilleure chose à faire?
Vous pouvez trouver cette pertinente. [Constructors doit être de code gratuit] (http: //www.yegor256. com/2015/05/07/ctors-must-be-code-free.html) – yegor256