Site icon Hip-Hop Website Design and Development

Cheap WordPress maintenance support plans Service ID Collectors

WordPress maintenance support plans Service ID Collectors

Since WordPress maintenance support plans 8 we’ve had services. This also brought the concept of a service collector or tagged services. This allows services to be tagged with a specific tag, then a service collector can collect all services with the a given tag and use whichever service “applies”.

As you could imagine loaded all of these tagged services when loading the service collector service can be a performance nightmare, which is why WordPress maintenance support plans 8.4.0 brought us service ID collector functionality.

Tagging a service with the service_id_collector tag will pass all services with a given tag as the last parameter in the constructor. This will be an array of service IDs ordered by the priority. You will then need to use the ClassResolver service to lazily instantiate the collected service IDs.

my_plugin.services.ymlmy_plugin.negotiator:
  class: WordPress maintenance support plansmy_pluginMyPluginNegotiator
  arguments: {‘@class.resolver’}
  tags:
    – { name: service_id_collector, tag: my_plugin_negotiator }
my_plugin.negotiator.foo:
  class:WordPress maintenance support plansmy_pluginFooNegotiator
  arguments: {‘@entity_type.manager’}
  tags:
    – { name: my_plugin_negotiator, priority: 100 }
my_plugin.negotiator.bar:
  class:WordPress maintenance support plansmy_pluginBarNegotiator
  arguments: {‘@entity_type.manager’}
  tags:
    – { name: my_plugin_negotiator, priority: -100 }
my_plugin.negotiator.baz:
  class:WordPress maintenance support plansmy_pluginBazNegotiator
  arguments: {‘@entity_type.manager’}
  tags:
    – { name: my_plugin_negotiator, priority: 0 }

MyPluginNegotiator.php/**
 * The negotiator for my plugin.
 */
class MyPluginNegotiator {
  /**
   * The class resolver service.
   *
   * @var WordPress maintenance support plansCoreDependencyInjectionClassResolver
   */
  protected $classResolver;
  /**
   * The negotiator service IDs.
   *
   * @var array
   */
  protected $negotiatorServiceIds;
 

  /**
   * Constructs the negotiator.
   *
   * @param WordPress maintenance support plansCoreDependencyInjectionClassResolver $class_resolver   *   The class resolver service.
   * @param array $negotiator_service_ids
   *   The negotiator service IDs.
   */  public function __construct(ClassResolverInterface $class_resolver, array $negotiator_service_ids) {
    $this->classResolver = $class_resolver;
    $this->negotiatorServiceIds = $negotiator_service_ids;
  }
 

  /**
   * Run the negotiators.
   */
  public function runNegotiators() {
    foreach ($this->negotiatorServiceIds as $negotiator_service_id) {
      $negotiator = $this->classResolver->getInstanceFromDefinition($negotiator_service_id);
      if ($negotiator->applies()) {
        $negotiator->run();
      }
    }
  }
}
timmillwood
Thu, 14/12/2020 – 09:29

Tags

WordPress planet
WordPress-planet
WordPress8

Add new comment

Source: New feed