Sto creando uno schema per Doctrine ma prima sto creando interfacce, classi astratte (modelli) che saranno estese dalle entità.
Ho una PresentationInterface che contiene getter e setter per le informazioni di presentazione, ParticipantInterface che contiene lo stesso (firstname, lastname, email).
Entrambi hanno le classi astratte, Presentazione e Partecipante che implementano getter e setter e contengono anche informazioni di mappatura per quei campi. Possono contenere alcuni metodi di utlity che non sono definiti nell'interfaccia ma sono necessari all'interno del getter e setter per l'elaborazione dei dati.
Le entità sono Presentazione , Partecipante e Presentatore . Partecipante si estende dal modello Partecipante e Presentatore da Partecipante . Ora per differenziare sto usando il tipo di ereditarietà di tabelle singole di Doctrine con una colonna discriminatore chiamata is_presenter che è mappata all'entità Partecipante .
Fondamentalmente, un presentatore è in grado di creare una presentazione che successivamente viene aggiunta dai partecipanti.
La mia domanda è, se isPresenter è stato definito in ParticipantInterface ? È il modo in cui l'ho fatto peggio o bene? Se l'avessi lasciato nell'interfaccia, non potrei comunque usarlo come discriminatore, ma da un punto di vista logico dovrebbe essere nell'interfaccia o forse in un altro chiamato PresenterParticipantInterface ?