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
Last revisionBoth sides next revision
development:plugins:auto_injection_interfaces [2015/12/09 19:41] – ↷ Page moved from vufind2:auto_injection_interfaces to development:plugins:auto_injection_interfaces demiankatzdevelopment:plugins:auto_injection_interfaces [2020/03/03 20:17] 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:
  
 +  * \Laminas\Log\LoggerAwareInterface - Get access to the VuFind\Logger service
   * \VuFind\Db\Table\DbTableAwareInterface - Get access to the VuFind\DbTablePluginManager service   * \VuFind\Db\Table\DbTableAwareInterface - Get access to the VuFind\DbTablePluginManager service
   * \VuFind\I18n\Translator\TranslatorAwareInterface - Get access to the VuFind\Translator service   * \VuFind\I18n\Translator\TranslatorAwareInterface - Get access to the VuFind\Translator service
   * \VuFindHttp\HttpServiceAwareInterface - Get access to the VuFind\Http service   * \VuFindHttp\HttpServiceAwareInterface - Get access to the VuFind\Http service
-  * \Zend\Log\LoggerAwareInterface - Get access to the VuFind\Logger 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 ===== ===== Traits =====
Line 22: Line 19:
   * \VuFindHttp\HttpServiceAwareTrait   * \VuFindHttp\HttpServiceAwareTrait
   * \VuFind\Log\LoggerAwareTrait   * \VuFind\Log\LoggerAwareTrait
-  * \Zend\ServiceManager\ServiceLocatorAwareTrait 
   * \ZfcRbac\Service\AuthorizationServiceAwareInterface   * \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 ----
 ---- ----
  
development/plugins/auto_injection_interfaces.txt · Last modified: 2020/03/03 20:26 by demiankatz