Actualmente estoy reconstruyendo un sistema de ticket especializado en el trabajo (principalmente utilizado para ayudar a personas con fallas en el hardware de detección remota ...). De todos modos, me preguntaba si hacer una gran cantidad de actividad de tipo de flujo de trabajo en el constructor de un objeto es una buena idea.¿Es buena idea la lógica comercial en los constructores?
Por ejemplo, en la actualidad esto:
$ticket = new SupportTicket(
$customer,
$title,
$start_ticket_now,
$mail_customer
);
tan pronto como se crea el objeto, que va a poner una fila en una base de datos, vaya y enviarlo por correo al cliente un correo electrónico de confirmación, posiblemente enviar un mensaje de texto al técnico más cercano, etc.
¿Debería un constructor estar ejecutando todo ese trabajo, o algo más como el siguiente?
$ticket = new SupportTicket($customer, $title);
$customer->confirmTicketMailed($ticket);
$helpdesk->alertNewTicket($ticket);
Si ayuda, los objetos están basados en el estilo ActiveRecord.
Supongo que puede ser una cuestión de opinión, pero ¿qué crees que es lo mejor que puedes hacer?
Usted puede encontrar esto relevante:. [Debe ser constructores de código libre] (http: //www.yegor256. com/2015/05/07/ctors-must-be-code-free.html) – yegor256