/**
  * @param ServiceDescriptor $sd
  * @throws NonExistentServiceException
  */
 public function check(ServiceDescriptor $sd)
 {
     if (!$sd->exists()) {
         /*var_dump($serviceDescriptor->getServiceName());
           var_dump($serviceDescriptor->getContainerBuilder()->get($serviceDescriptor->getServiceName()));
           die;*/
         throw new NonExistentServiceException(sprintf('the service %s do not exists', $sd->getServiceName()));
     }
 }
 /**
  * @param ServiceDescriptor $sd
  * @param $factoryService
  * @throws NonExistentFactoryMethodException
  */
 private function checkFactoryService(ServiceDescriptor $sd, $factoryService)
 {
     $definition = $sd->getDefinition();
     $reflection = new \ReflectionClass($factoryService);
     $factoryMethod = $definition->getFactoryMethod();
     if (!$reflection->hasMethod($factoryMethod)) {
         throw new NonExistentFactoryMethodException('error, factory method do not esists');
     }
     $method = $reflection->getMethod($factoryMethod);
     $this->compare($sd, $definition->getArguments(), $method->getParameters());
 }
 /**
  * @param ServiceDescriptor $sd
  * @throws UnusedArgument
  * @return void
  */
 public function check(ServiceDescriptor $sd)
 {
     $refl = new \ReflectionClass($sd->getDefinition()->getClass());
     $filename = $refl->getFileName();
     if (false === $filename) {
         return;
     }
     $this->fileContent = file_get_contents($filename);
     $constr = $refl->getConstructor();
     /** @var \ReflectionParameter $param */
     foreach ($constr->getParameters() as $param) {
         if ($this->isNotUsed($param->getName())) {
             throw new UnusedArgument($param->getName());
         }
     }
 }
 /**
  * @param ServiceDescriptor $sd
  * @throws NonExistentClassException
  */
 public function check(ServiceDescriptor $sd)
 {
     if ($sd->isAlias()) {
         return;
     }
     $class = $sd->getDefinition()->getClass();
     if ($this->isParameter($class)) {
         $class = $sd->getContainer()->getParameter(trim($class, '%'));
     }
     $factoryClass = $sd->getDefinition()->getFactoryClass();
     if ($this->isParameter($factoryClass)) {
         $factoryClass = $sd->getContainer()->getParameter(trim($factoryClass, '%'));
     }
     if (is_null($class) && is_null($factoryClass)) {
         return;
     }
     if (interface_exists($class) && is_null($factoryClass)) {
         return;
     }
     if (interface_exists($class) && class_exists($factoryClass)) {
         return;
     }
     if (!class_exists($class)) {
         throw new NonExistentClassException(sprintf('the class %s for the service %s does not exists', $class, $sd->getServiceName()));
     }
 }
 public function setServiceDescriptor(ServiceDescriptor $sd)
 {
     $this->serviceName = $sd->getServiceName();
     $this->class = $sd->getDefinition()->getClass();
     $this->factoryService = $sd->getDefinition()->getFactoryService();
     $this->factoryClass = $sd->getDefinition()->getFactoryClass();
     $this->factoryMethod = $sd->getDefinition()->getFactoryMethod();
     $this->message = sprintf("--------\nProblem found in <info>%s</info>", $this->serviceName);
 }