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:auto_injection_interfaces

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
vufind2:auto_injection_interfaces [2015/12/09 19:38] demiankatzdevelopment:plugins:auto_injection_interfaces [2020/03/03 20:26] (current) demiankatz
Line 1: Line 1:
 ====== Auto Injection Interfaces ====== ====== Auto Injection Interfaces ======
  
-Any VuFind plugin accessed through a [[general_plugin_information|standard plugin interface]] can implement certain "-Aware" interfaces in order to be automatically injected with dependencies.  This is a convenient way to gain access to other elements of the VuFind system.+Any VuFind plugin accessed through a [[development:plugins:general_information|standard plugin interface]] can implement certain "-Aware" interfaces in order to be automatically injected with dependencies.  This is a convenient way to gain access to other elements of the VuFind system.
  
 Here are the relevant interfaces: Here are the relevant interfaces:
  
-  * \VuFind\Db\Table\DbTableAwareInterface - Get access to the VuFind\DbTablePluginManager service +  * \Laminas\Log\LoggerAwareInterface - Get access to the VuFind\Log\Logger service 
-  * \VuFind\I18n\Translator\TranslatorAwareInterface - Get access to the VuFind\Translator service +  * \VuFind\Db\Table\DbTableAwareInterface - Get access to the VuFind\Db\Table\PluginManager service 
-  * \VuFindHttp\HttpServiceAwareInterface - Get access to the VuFind\Http service +  * \VuFind\I18n\Translator\TranslatorAwareInterface - Get access to the Laminas\Mvc\I18n\Translator service 
-  * \Zend\Log\LoggerAwareInterface - Get access to the VuFind\Logger service +  * \VuFindHttp\HttpServiceAwareInterface - Get access to the VuFindHttp\HttpService service
-  * \Zend\ServiceManager\ServiceLocatorAwareInterface - Get access to the plugin manager that constructed the current object+
   * \ZfcRbac\Service\AuthorizationServiceAwareInterface - Get access to the authorization service (for permission checks)   * \ZfcRbac\Service\AuthorizationServiceAwareInterface - Get access to the authorization service (for permission checks)
  
-You can also implement a setPluginManager() method as an alternative to implementing the \Zend\ServiceManager\ServiceLocatorAwareInterface; the result is the same.+===== Traits ===== 
 + 
 +Starting with VuFind 2.4, Traits are provided which can be used in addition to interfaces to automatically implement interface-specific methods (and in some case, useful related utility methods). These Traits can help to reduce redundancy in your code: 
 + 
 +  * \VuFind\Db\Table\DbTableAwareTrait 
 +  * \VuFind\I18n\Translator\TranslatorAwareTrait 
 +  * \VuFindHttp\HttpServiceAwareTrait 
 +  * \VuFind\Log\LoggerAwareTrait 
 +  * \ZfcRbac\Service\AuthorizationServiceAwareInterface 
 + 
 +===== Deprecated/Removed Functionality ===== 
 + 
 +As the framework behind VuFind has evolved, auto-injection has been recognized as an anti-pattern in many situations, and it is now largely discouraged. Thus, some related capabilities have been scaled back or removed. 
 + 
 +  * \Zend\ServiceManager\ServiceLocatorAwareTrait used to trigger auto-injection of the top-level service manager. As of VuFind 4.0, it is no longer supported. 
 +  * You used to be able to implement a setPluginManager() method as an alternative to implementing the \Zend\ServiceManager\ServiceLocatorAwareInterface; the result was the same. Support for setPluginManager was removed starting with VuFind 5.0. 
 +  * In VuFind 7.0, all Zend services were renamed to Laminas services because of the rebranding of the framework. 
 ---- struct data ---- ---- struct data ----
 +properties.Page Owner : 
 ---- ----
  
development/plugins/auto_injection_interfaces.txt · Last modified: 2020/03/03 20:26 by demiankatz