Goetas\Xsd\XsdToPhp\Jms\YamlConverter::visitElement PHP Méthode

visitElement() private méthode

private visitElement ( PHPClass &$class, GoetasWebservices\XML\XSDReader\Schema\Schema $schema, GoetasWebservices\XML\XSDReader\Schema\Element\ElementItem $element, boolean $arrayize = true ) : Goetas\Xsd\XsdToPhp\Structure\PHPProperty
$class PHPClass
$schema GoetasWebservices\XML\XSDReader\Schema\Schema
$element GoetasWebservices\XML\XSDReader\Schema\Element\ElementItem
$arrayize boolean
Résultat Goetas\Xsd\XsdToPhp\Structure\PHPProperty
    private function visitElement(&$class, Schema $schema, ElementItem $element, $arrayize = true)
    {
        $property = array();
        $property["expose"] = true;
        $property["access_type"] = "public_method";
        $property["serialized_name"] = $element->getName();
        if ($element->getSchema()->getTargetNamespace()) {
            $property["xml_element"]["namespace"] = $element->getSchema()->getTargetNamespace();
        }
        $property["accessor"]["getter"] = "get" . Inflector::classify($element->getName());
        $property["accessor"]["setter"] = "set" . Inflector::classify($element->getName());
        $t = $element->getType();
        if ($arrayize) {
            if ($itemOfArray = $this->isArrayNestedElement($t)) {
                if (!$t->getName()) {
                    $classType = $this->visitTypeAnonymous($t, $element->getName(), $class);
                } else {
                    $classType = $this->visitType($t);
                }
                $visited = $this->visitElement($classType, $schema, $itemOfArray, false);
                $property["type"] = "array<" . $visited["type"] . ">";
                $property["xml_list"]["inline"] = false;
                $property["xml_list"]["skip_when_empty"] = $element->getMin() === 0;
                $property["xml_list"]["entry_name"] = $itemOfArray->getName();
                if ($schema->getTargetNamespace()) {
                    $property["xml_list"]["namespace"] = $schema->getTargetNamespace();
                }
                return $property;
            } elseif ($itemOfArray = $this->isArrayType($t)) {
                if (!$t->getName()) {
                    $visitedType = $this->visitTypeAnonymous($itemOfArray, $element->getName(), $class);
                    if ($prop = $this->typeHasValue($itemOfArray, $class, 'xx')) {
                        $property["type"] = "array<" . $prop . ">";
                    } else {
                        $property["type"] = "array<" . key($visitedType) . ">";
                    }
                } else {
                    $this->visitType($itemOfArray);
                    $property["type"] = "array<" . $this->findPHPName($itemOfArray) . ">";
                }
                $property["xml_list"]["inline"] = false;
                $property["xml_list"]["entry_name"] = $itemOfArray->getName();
                if ($schema->getTargetNamespace()) {
                    $property["xml_list"]["namespace"] = $schema->getTargetNamespace();
                }
                return $property;
            } elseif ($this->isArrayElement($element)) {
                $property["xml_list"]["inline"] = true;
                $property["xml_list"]["entry_name"] = $element->getName();
                if ($schema->getTargetNamespace()) {
                    $property["xml_list"]["namespace"] = $schema->getTargetNamespace();
                }
                $property["type"] = "array<" . $this->findPHPClass($class, $element) . ">";
                return $property;
            }
        }
        $property["type"] = $this->findPHPClass($class, $element);
        return $property;
    }