In this chapter we have discovered that events trigger the event dispatcher to notify listeners whenever an event occurs. We learned that listeners can be either classes or functions and that they must be registered with the global event dispatcher.
We discussed how plugins are located within either an existing plugin group or a group that we define. Plugin groups provide increased efficiency because we only need to import the required plugins, not all plugins.
We also learned that in lieu of library extensions, we can manipulate plugins to behave like libraries. Plugins can go far beyond the intended use of handling events. If we utilize plugins to our advantage, we can create modular extensions.
In the next chapter, we will discuss advanced methods for rendering our extensions more robust, secure, and professional. We will cover building better layouts and templates, ordering and sorting lists of data, pagination, and discover the wealth of features and functionality available with...