vendor/pimcore/pimcore/bundles/EcommerceFrameworkBundle/Traits/OptionsResolverTrait.php line 50

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4.  * Pimcore
  5.  *
  6.  * This source file is available under two different licenses:
  7.  * - GNU General Public License version 3 (GPLv3)
  8.  * - Pimcore Commercial License (PCL)
  9.  * Full copyright and license information is available in
  10.  * LICENSE.md which is distributed with this source code.
  11.  *
  12.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  13.  *  @license    http://www.pimcore.org/license     GPLv3 and PCL
  14.  */
  15. namespace Pimcore\Bundle\EcommerceFrameworkBundle\Traits;
  16. use Symfony\Component\OptionsResolver\OptionsResolver;
  17. trait OptionsResolverTrait
  18. {
  19.     /**
  20.      * @var OptionsResolver[]
  21.      */
  22.     protected $optionsResolvers = [];
  23.     /**
  24.      * Runs options through options resolver. Supports multiple options resolvers identified
  25.      * by name (e.g. for sub-options)
  26.      *
  27.      * @param array $options
  28.      * @param string $resolverName
  29.      *
  30.      * @return array
  31.      */
  32.     protected function resolveOptions(array $optionsstring $resolverName 'default'): array
  33.     {
  34.         return $this->getOptionsResolver($resolverName)->resolve($options);
  35.     }
  36.     /**
  37.      * Sets up and returns a named options resolver
  38.      *
  39.      * @param string $resolverName
  40.      *
  41.      * @return OptionsResolver
  42.      */
  43.     protected function getOptionsResolver(string $resolverName 'default'): OptionsResolver
  44.     {
  45.         if (!isset($this->optionsResolvers[$resolverName])) {
  46.             $this->optionsResolvers[$resolverName] = new OptionsResolver();
  47.             $this->configureOptionsResolver($resolverName$this->optionsResolvers[$resolverName]);
  48.         }
  49.         return $this->optionsResolvers[$resolverName];
  50.     }
  51.     /**
  52.      * Set up options resolver (add defaults, set required fields, ...)
  53.      *
  54.      * @param string $resolverName
  55.      * @param OptionsResolver $resolver
  56.      *
  57.      * @throws \InvalidArgumentException If no resolver with the given name is supported
  58.      */
  59.     abstract protected function configureOptionsResolver(string $resolverNameOptionsResolver $resolver);
  60. }