Dodati event sistem u skriptu je jako obiman posao i uglavnom za postojeće stvari podrazumeva prolazak kroz većinu koda. Originalna ideja za plugine kod activeCollaba je bila baš to - event sistem gde se pluginima daje mogućnost da se subscribuju na određeni event i obrade ga kad isti bude "okinut".
Ono što mene najviše brine ovde su performanse. Koliki to stvarno overhead donosi? Mislim, activeCollab sam po sebi jeste trom (će da bude sređeno!) i bojim se da bi ga ovako nešto podosta usporilo koda bi se išlo u previše detalja.
Primeri: onCommentDisplay(Comment $comment). Recimo, plugin može da se subscribuje na ovaj događaj i u određenim uslovima spreči prikaz komentara ili promeni način na koji se isti renderuje. Ovo ne donosi samo novi nivo fleksibilnosti sistema, već i novi način kako da praviš sam sistem. Uvrnuto... Plaši me!
Btw, događaji su samo jedan od delova plugin sistema. Mislim da su jedan od najtežih za rešiti jer se protežu kroz kompletan sistem, ali osnovne stvari kao nasleđivanje abstraktnog plugina, struktura direktorijuma, rukovanje client side fajlovima (assets), dozvole, enable / disable - sve takođe važne stvari.