productPriceUtils = $productPriceUtils; $this->orderProductPriceUtils = $orderProductPriceUtils; $this->orderShopPriceUtils = $orderShopPriceUtils; } public function __call($name, $arguments) { if (strpos($name, 'apply') === false) { $entity = $arguments[0]; $service = ''; if ($entity instanceof ProductPropertyInterface) { $service = 'productPriceUtils'; } if ($entity instanceof OrderProductInterface) { $service = 'orderProductPriceUtils'; } if ($entity instanceof OrderShopInterface || is_array($entity)) { $service = 'orderShopPriceUtils'; } if (strlen($service) && $entity && method_exists($this->$service, $name)) { if (isset($arguments[1]) && isset($arguments[2]) && isset($arguments[3])) { return $this->$service->$name($entity, $arguments[1], $arguments[2], $arguments[3]); } elseif (isset($arguments[1]) && isset($arguments[2])) { return $this->$service->$name($entity, $arguments[1], $arguments[2]); } elseif (isset($arguments[1])) { return $this->$service->$name($entity, $arguments[1]); } else { return $this->$service->$name($entity); } } else { if (!strlen($service)) { throw new \ErrorException("PriceUtils : le type d'entité n'est pas géré."); } else { if (!method_exists($this->$service, $name)) { throw new \ErrorException("PriceUtils : la méthode " . $name . " du service " . $service . " n'existe pas."); } } } return false; } } }