public function visitStructureElementEnter(PiBX_AST_Tree $tree) { $name = $tree->getName(); $parentName = $tree->getParent()->getName(); $attributeName = $parentName . $name; $selectName = ucfirst($parentName) . 'Select'; $this->currentClassAttributes .= "\tprivate \$" . $attributeName . ";\n"; $choiceConstant = $parentName . '_' . $name . '_CHOICE'; $choiceConstant = strtoupper($choiceConstant); $setter = PiBX_Binding_Names::createSetterNameFor($tree); $getter = PiBX_Binding_Names::createGetterNameFor($tree); $methodName = ucfirst($attributeName); $methods = "\tpublic function if{$methodName}() {\n" . "\t\treturn \$this->{$parentName}Select == \$this->{$choiceConstant};\n" . "\t}\n"; $methods .= "\tpublic function {$setter}(\${$attributeName}) {\n" . "\t\t\$this->set{$selectName}(\$this->{$choiceConstant});\n"; if ($this->doTypeChecks) { $methods .= $this->typeChecks->getTypeCheckFor($tree->getType(), $attributeName); } $methods .= "\t\t\$this->{$attributeName} = \${$attributeName};\n" . "\t}\n"; $methods .= "\tpublic function {$getter}() {\n" . "\t\treturn \$this->{$attributeName};\n" . "\t}\n"; $this->currentClassMethods .= $methods; return true; }
public function visitTypeAttributeEnter(PiBX_AST_Tree $tree) { if ($tree->countChildren() == 0) { if (PiBX_ParseTree_BaseType::isBaseType($tree->getType())) { $this->xml .= '<value style="' . $tree->getStyle() . '"'; $this->xml .= ' name="' . $tree->getName() . '"'; $getter = PiBX_Binding_Names::createGetterNameFor($tree); $setter = PiBX_Binding_Names::createSetterNameFor($tree); $this->xml .= ' get-method="' . $getter . '"'; $this->xml .= ' set-method="' . $setter . '"'; $this->xml .= '/>'; } else { $this->xml .= '<structure map-as="' . $tree->getType() . '"'; $getter = PiBX_Binding_Names::createGetterNameFor($tree); $setter = PiBX_Binding_Names::createSetterNameFor($tree); $this->xml .= ' get-method="' . $getter . '"'; $this->xml .= ' set-method="' . $setter . '"'; $this->xml .= ' name="' . $tree->getName() . '"'; $this->xml .= '/>'; } return false; } else { return true; } }