WsdlToPhp\PackageGenerator\DomHandler\Wsdl\Tag\AbstractTag::getSuitableParent PHP Method

getSuitableParent() public method

This method aims to get the parent element that matches a valid Wsdl element (aka struct)
public getSuitableParent ( boolean $checkName = true, array $additionalTags = [], integer $maxDeep = self::MAX_DEEP, boolean $strict = false ) : null | AbstractNodeHandler | AbstractElementHandler | AbstractAttributeHandler | AbstractTag
$checkName boolean whether to validate the attribute named "name" or not
$additionalTags array
$maxDeep integer
$strict boolean used by overridden methods to avoid infinite loop
return null | WsdlToPhp\PackageGenerator\DomHandler\AbstractNodeHandler | WsdlToPhp\PackageGenerator\DomHandler\AbstractElementHandler | WsdlToPhp\PackageGenerator\DomHandler\AbstractAttributeHandler | AbstractTag
    public function getSuitableParent($checkName = true, array $additionalTags = array(), $maxDeep = self::MAX_DEEP, $strict = false)
    {
        $parentNode = null;
        if ($this->getParent() instanceof AbstractNodeHandler) {
            $parentTags = $strict ? $additionalTags : $this->getSuitableParentTags($additionalTags);
            $parentNode = $this->getParent()->getNode();
            while ($maxDeep-- > 0 && $parentNode instanceof \DOMElement && !empty($parentNode->nodeName) && (!preg_match('/' . implode('|', $parentTags) . '/i', $parentNode->nodeName) || $checkName && preg_match('/' . implode('|', $parentTags) . '/i', $parentNode->nodeName) && (!$parentNode->hasAttribute('name') || $parentNode->getAttribute('name') === ''))) {
                $parentNode = $parentNode->parentNode;
            }
            if ($parentNode instanceof \DOMElement) {
                $parentNode = $this->getDomDocumentHandler()->getHandler($parentNode);
            } else {
                $parentNode = null;
            }
        }
        return $parentNode;
    }

Usage Example

 /**
  * @param Tag $tag
  */
 public function parseTag(Tag $tag)
 {
     $parent = $tag->getSuitableParent();
     if ($parent instanceof Tag) {
         $model = $this->getModel($parent);
         if ($model instanceof Struct) {
             if ($tag->hasAttributeName() && ($modelAttribute = $model->getAttribute($tag->getAttributeName())) instanceof StructAttribute) {
                 return $this->parseTagAttributes($tag, $model, $modelAttribute);
             }
             $this->parseTagAttributes($tag, $model);
         }
     }
     $this->parseTagAttributes($tag);
 }
All Usage Examples Of WsdlToPhp\PackageGenerator\DomHandler\Wsdl\Tag\AbstractTag::getSuitableParent