Beispiel #1
0
 /**
  *
  * @param \EBT\ExtensionBuilder\Domain\Model\DomainObject\Relation\AbstractRelation $domainProperty
  *
  * @return \EBT\ExtensionBuilder\Domain\Model\ClassObject\Method
  */
 protected function buildRemoveMethod($domainProperty)
 {
     $propertyName = $domainProperty->getName();
     $removeMethodName = self::getMethodName($domainProperty, 'remove');
     $parameterName = \EBT\ExtensionBuilder\Utility\Tools::getParameterName($domainProperty, 'remove');
     if ($this->classObject->methodExists($removeMethodName)) {
         $removeMethod = $this->classObject->getMethod($removeMethodName);
     } else {
         $removeMethod = clone $this->templateClassObject->getMethod('removeChild');
         $removeMethod->setName('remove' . ucfirst(\EBT\ExtensionBuilder\Utility\Inflector::singularize($propertyName)));
         $removeMethod->setTag('param', \EBT\ExtensionBuilder\Utility\Tools::getParamTag($domainProperty, 'remove'), true);
         $removeMethod->setTag('return', 'void');
         $removeMethod->addModifier('public');
         $removeMethod->getParameterByPosition(0)->setName($parameterName)->setVarType($domainProperty->getForeignClassName())->setTypeHint($domainProperty->getForeignClassName());
         $removeMethod->updateParamTags();
         $this->updateMethodBody($removeMethod, array('childToRemove' => $parameterName, 'child' => $domainProperty->getForeignModelName(), 'children' => $propertyName, 'Child' => $domainProperty->getForeignModelName()));
         $this->updateDocComment($removeMethod, array('\\bchildToRemove\\b' => $parameterName, '\\bChild\\b' => $domainProperty->getForeignModelName()));
     }
     $removeParameters = $removeMethod->getParameterNames();
     if (!in_array(\EBT\ExtensionBuilder\Utility\Tools::getParameterName($domainProperty, 'remove'), $removeParameters)) {
         $removeParameter = new Model\ClassObject\MethodParameter(\EBT\ExtensionBuilder\Utility\Tools::getParameterName($domainProperty, 'remove'), true);
         $removeParameter->setName(\EBT\ExtensionBuilder\Utility\Tools::getParameterName($domainProperty, 'remove'))->setVarType($domainProperty->getForeignClassName())->setTypeHint($domainProperty->getForeignClassName())->setTypeForParamTag($domainProperty->getTypeForComment());
         $removeMethod->setParameter($removeParameter);
     }
     if (!$removeMethod->hasDescription()) {
         $removeMethod->setDescription('Removes a ' . $domainProperty->getForeignModelName());
     }
     return $removeMethod;
 }