About Features Downloads Getting Started Documentation Events Support GitHub

Site Tools


development:plugins:general_information

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
development:plugins:general_information [2020/03/03 17:48]
demiankatz ↷ Links adapted because of a move operation
development: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]].+
development/plugins/general_information.txt · Last modified: 2020/03/03 20:08 by demiankatz