About Features Downloads Getting Started Documentation Events Support GitHub

Love VuFind®? Consider becoming a financial supporter. Your support helps build a better VuFind®!

Site Tools


Warning: This page has not been updated in over over a year and may be outdated or deprecated.
development:plugins:general_information

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
development:plugins:general_information [2020/03/03 17:48] – ↷ Links adapted because of a move operation demiankatzdevelopment:plugins:general_information [2020/03/03 20:08] (current) demiankatz
Line 1: Line 1:
 ====== General Plugin Information ====== ====== General Plugin Information ======
  
-Zend plugin is any class that is determined at runtime.+A plugin is any class that is determined at runtime.
  
 Although VuFind versions 2.x and later provide a wide variety of plugins for a wide variety of purposes, they all follow certain basic patterns: Although VuFind versions 2.x and later provide a wide variety of plugins for a wide variety of purposes, they all follow certain basic patterns:
  
   * Each family of plugins has a common interface and/or base class.   * Each family of plugins has a common interface and/or base class.
-  * Each family of plugins is loaded with the help of a [[development:architecture:laminas|Zend Framework]] service locator, which in turn can be obtained from the main [[http://framework.zend.com/manual/2.0/en/modules/zend.service-manager.intro.html|Service Manager]].+  * Each family of plugins is loaded with the help of a [[development:architecture:laminas|Laminas]] service locator, which in turn can be obtained from the main [[https://docs.laminas.dev/laminas-servicemanager/|Service Manager]].
   * Each plugin-specific service locator can be configured through its own section of module.config.php inside VuFind's main module (which can be overridden and extended through a [[development:architecture:customizing_vufind#modules|local custom module]]).   * Each plugin-specific service locator can be configured through its own section of module.config.php inside VuFind's main module (which can be overridden and extended through a [[development:architecture:customizing_vufind#modules|local custom module]]).
   * Each family of plugins lives in its own namespace, but VuFind can be configured to load custom plugins from other places.   * Each family of plugins lives in its own namespace, but VuFind can be configured to load custom plugins from other places.
Line 41: Line 41:
 ===== Accessing Other Plugins / Services ===== ===== Accessing Other Plugins / Services =====
  
-If you implement the [[https://github.com/zendframework/zf2/blob/master/library/Zend/ServiceManager/ServiceLocatorAwareInterface.php|\Zend\ServiceManager\ServiceLocatorAwareInterface]] in your plugin, it will be automatically injected with the appropriate service locator for its plugin type.  This means that you can load additional plugins of the same type using $this->getServiceLocator()->get($pluginName); and you can get access to the top-level Service Manager using $this->getServiceLocator()->getServiceLocator(). +If your plugin depends on other components, it is often desirable to inject dependencies into the constructor in a factory in the service manager configuration. Certain standard components can also be accessed by implementing [[development:plugins:auto_injection_interfaces|auto injection interfaces]].
- +
-If your plugin depends on other components, it is often preferable to inject dependencies into the constructor in a factory in the service manager configuration rather than overusing the ServiceLocatorAwareInterface Certain standard components can also be accessed by implementing [[development:plugins:auto_injection_interfaces|auto injection interfaces]].+
 ---- struct data ---- ---- struct data ----
 +properties.Page Owner : 
 ---- ----
  
development/plugins/general_information.txt · Last modified: 2020/03/03 20:08 by demiankatz