vendor/pimcore/pimcore/bundles/EcommerceFrameworkBundle/CartManager/CartPriceCalculatorFactory.php line 69

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\CartManager;
  16. use Pimcore\Bundle\EcommerceFrameworkBundle\EnvironmentInterface;
  17. use Symfony\Component\OptionsResolver\OptionsResolver;
  18. class CartPriceCalculatorFactory implements CartPriceCalculatorFactoryInterface
  19. {
  20.     /**
  21.      * @var EnvironmentInterface
  22.      */
  23.     protected $environment;
  24.     /**
  25.      * @var array
  26.      */
  27.     protected $modificatorConfig;
  28.     /**
  29.      * @var array
  30.      */
  31.     protected $options;
  32.     /**
  33.      * @param array $modificatorConfig
  34.      * @param array $options
  35.      */
  36.     public function __construct(array $modificatorConfig, array $options = [])
  37.     {
  38.         $this->modificatorConfig $modificatorConfig;
  39.         $resolver = new OptionsResolver();
  40.         $this->configureOptions($resolver);
  41.         $this->options $resolver->resolve($options);
  42.     }
  43.     protected function configureOptions(OptionsResolver $resolver)
  44.     {
  45.         $resolver->setRequired('class');
  46.         $resolver->setDefaults([
  47.             'class' => CartPriceCalculator::class,
  48.         ]);
  49.         $resolver->setAllowedTypes('class''string');
  50.     }
  51.     public function create(EnvironmentInterface $environmentCartInterface $cart): CartPriceCalculatorInterface
  52.     {
  53.         $class $this->options['class'];
  54.         return new $class($environment$cart$this->modificatorConfig);
  55.     }
  56. }