Chiarimento Behavior E Override Eventi

Ciao,

quando estendo una classe A e sovrascrivo un metodo nella classe B, posso attraverso parent::evento() combinare il comportamento di A e B.

Ma nel caso in cui includa un CBehavior di terze parti che implementa il metodo afterSave ma abbia bisogno allo stesso tempo di avere il mio afterSave, come posso eseguire entrambi?

Alla fine può essere che più metodi possano ascoltare il lancio di un avento ma nel mio caso viene eseguito solo il metodo della mia classe.

Probabilmente mi sto perdendo in un bicchiere d’acqua…

Gestisci tutto usando parent::afterSave() dentro afterSave() del tuo modello, fai delle prove per metterlo prima o dopo una tua certa logica per vedere il flusso delle chiamate.

Comunque, la domanda l’hai fatta perché è venuto fuori un qualche problema particolare o è “preventiva”? :)

Intanto grazie!

E’ nato da un problema che ho risolto usando beforeSave, che in realtà è più appropriato per la mia logica, ma da questo mi è sorto il dubbio.

Nel caso in cui ho tre classi che implementano lo stesso metodo afterSave:

  • ModelA

  • ModelB che estende ModelA

  • MyBehavior attaccato a ModelA come behaviors

se come suggerisci te nell’istanza di ModelB metodo afterSave richiamo parent::afterSave(), quale sto richiamando tra ModelA e MyBehavior?

Grazie!

Il flusso dovrebbe essere modelB poi modelA poi il behavior, penso che puoi verificarlo velocemente mettendo dei breakpoints dentro i vari afterSave() delle 3 classi.

Io sono pasato a yii2 da diverso tempo e non ho un’installazione yii1 sotto mano!