Skip to content
Snippets Groups Projects
Commit 85b4d86c authored by catch's avatar catch
Browse files

Issue #2514582 by Mile23, joachim, sahil.goyal, jhodgdon, Fabianx, dawehner:...

Issue #2514582 by Mile23, joachim, sahil.goyal, jhodgdon, Fabianx, dawehner: Document lazy services and fix script doxygen
parent 5e4462f6
No related branches found
No related tags found
34 merge requests!7452Issue #1797438. HTML5 validation is preventing form submit and not fully...,!54479.5.x SF update,!5014Issue #3071143: Table Render Array Example Is Incorrect,!4868Issue #1428520: Improve menu parent link selection,!4289Issue #1344552 by marcingy, Niklas Fiekas, Ravi.J, aleevas, Eduardo Morales...,!4114Issue #2707291: Disable body-level scrolling when a dialog is open as a modal,!4100Issue #3249600: Add support for PHP 8.1 Enums as allowed values for list_* data types,!3630Issue #2815301 by Chi, DanielVeza, kostyashupenko, smustgrave: Allow to create...,!3600Issue #3344629: Passing null to parameter #1 ($haystack) of type string is deprecated,!3291Issue #3336463: Rewrite rules for gzipped CSS and JavaScript aggregates never match,!3102Issue #3164428 by DonAtt, longwave, sahil.goyal, Anchal_gupta, alexpott: Use...,!2378Issue #2875033: Optimize joins and table selection in SQL entity query implementation,!2334Issue #3228209: Add hasRole() method to AccountInterface,!2074Issue #2707689: NodeForm::actions() checks for delete access on new entities,!2062Issue #3246454: Add weekly granularity to views date sort,!1591Issue #3199697: Add JSON:API Translation experimental module,!1484Exposed filters get values from URL when Ajax is on,!1255Issue #3238922: Refactor (if feasible) uses of the jQuery serialize function to use vanillaJS,!1162Issue #3100350: Unable to save '/' root path alias,!1105Issue #3025039: New non translatable field on translatable content throws error,!1073issue #3191727: Focus states on mobile second level navigation items fixed,!10223132456: Fix issue where views instances are emptied before an ajax request is complete,!957Added throwing of InvalidPluginDefinitionException from getDefinition().,!925Issue #2339235: Remove taxonomy hard dependency on node module,!877Issue #2708101: Default value for link text is not saved,!872Draft: Issue #3221319: Race condition when creating menu links and editing content deletes menu links,!844Resolve #3036010 "Updaters",!712Issue #2909128: Autocomplete intermittent on Chrome Android,!617Issue #3043725: Provide a Entity Handler for user cancelation,!579Issue #2230909: Simple decimals fail to pass validation,!560Move callback classRemove outside of the loop,!555Issue #3202493,!485Sets the autocomplete attribute for username/password input field on login form.,!30Issue #3182188: Updates composer usage to point at ./vendor/bin/composer
...@@ -886,6 +886,10 @@ ...@@ -886,6 +886,10 @@
* Note that $container here is an instance of * Note that $container here is an instance of
* \Drupal\Core\DependencyInjection\ContainerBuilder. * \Drupal\Core\DependencyInjection\ContainerBuilder.
* *
* @section lazy_services Lazy services
* Some services can be declared as lazy to improve performance. See @link
* lazy_services Lazy Services @endlink for details.
*
* @see https://www.drupal.org/node/2133171 * @see https://www.drupal.org/node/2133171
* @see core.services.yml * @see core.services.yml
* @see \Drupal * @see \Drupal
...@@ -2489,6 +2493,32 @@ function hook_validation_constraint_alter(array &$definitions) { ...@@ -2489,6 +2493,32 @@ function hook_validation_constraint_alter(array &$definitions) {
* @} * @}
*/ */
/**
* @defgroup lazy_services Lazy Services
* @{
* Lazy services overview
*
* A service can be declared as lazy in order to improve performance. Classes
* that inject a lazy service receive a proxy class instead, and when a method
* on the lazy service is called, the proxy class gets the service from the
* container and forwards the method call. This means that the lazy service is
* only instantiated when it is needed.
*
* This is useful because some classes may inject a service which is expensive
* to instantiate (because it has multiple dependencies of its own), but is only
* used in exceptional cases. This would make the class dependent on the
* expensive service and all of the expensive service's dependencies.
*
* Making the expensive service lazy means that the class is only dependent on
* the proxy service, and not on all the dependencies of the lazy service.
*
* To define a service as lazy, add @code lazy: true @endcode to the service
* definition, and use the @code core/scripts/generate-proxy.sh @endcode script
* to generate the proxy class.
*
* @see core/scripts/generate-proxy.sh
*/
/** /**
* @defgroup events Events * @defgroup events Events
* @{ * @{
......
...@@ -9,6 +9,9 @@ ...@@ -9,6 +9,9 @@
/** /**
* Provides a console command to generate proxy classes. * Provides a console command to generate proxy classes.
*
* @see lazy_services
* @see core/scripts/generate-proxy.sh
*/ */
class GenerateProxyClassApplication extends Application { class GenerateProxyClassApplication extends Application {
......
...@@ -10,6 +10,9 @@ ...@@ -10,6 +10,9 @@
/** /**
* Provides a console command to generate proxy classes. * Provides a console command to generate proxy classes.
*
* @see lazy_services
* @see core/scripts/generate-proxy.sh
*/ */
class GenerateProxyClassCommand extends Command { class GenerateProxyClassCommand extends Command {
......
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
/** /**
* Replaces all services with a lazy flag. * Replaces all services with a lazy flag.
*
* @see lazy_services
*/ */
class ProxyServicesPass implements CompilerPassInterface { class ProxyServicesPass implements CompilerPassInterface {
......
...@@ -3,7 +3,14 @@ ...@@ -3,7 +3,14 @@
/** /**
* @file * @file
* A command line application to generate proxy classes. * A script to generate proxy classes for lazy services.
*
* For help, type this command from the root directory of an installed Drupal
* site: php core/scripts/generate-proxy-class.php -h generate-proxy-class
*
* @ingroup container
*
* @see lazy_services
*/ */
use Drupal\Core\Command\GenerateProxyClassApplication; use Drupal\Core\Command\GenerateProxyClassApplication;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment