public function getToArray(ClassEntity $entity = null) { $code = array(); $code[] = sprintf('%s/**', $this->getIndentation()); $code[] = sprintf('%s * Create the data array for the %s', $this->getIndentation(), $entity->getName()); $code[] = sprintf('%s *', $this->getIndentation(), $entity->getName()); $code[] = sprintf('%s * @param %s $%s The %s to convert to an array', $this->getIndentation(), $entity->getName(), lcfirst($entity->getName()), $entity->getName()); $code[] = sprintf('%s * @return array The data array for the %s', $this->getIndentation(), $entity->getName()); $code[] = sprintf('%s */', $this->getIndentation()); $code[] = sprintf('%sfunction toArray(%s $%s)', $this->getIndentation(), $entity->getName(), lcfirst($entity->getName())); $code[] = sprintf('%s{', $this->getIndentation()); // body $code[] = sprintf('%s$data = array(', $this->getIndentation(2), lcfirst($entity->getName())); $members = $entity->getMembers(); foreach ($members as $member) { if ($member->getType() != 'property') { continue; } $code[] = sprintf("%s'%s' => \$%s->get%s(),", $this->getIndentation(3), $member->getName(), lcfirst($entity->getName()), ucfirst($member->getName())); } $code[] = sprintf('%s);', $this->getIndentation(2)); $code[] = sprintf(''); $code[] = sprintf('%sreturn $data;', $this->getIndentation(2)); // end body $code[] = sprintf('%s}', $this->getIndentation()); return $code; }
public function generateArrayCreation(ClassEntity $entity) { $code = array(); $code[] = sprintf('$%s = array(', lcFirst($entity->getName())); $members = $entity->getMembers(); foreach ($members as $member) { if ($member->getType() != 'property') { continue; } $code[] = sprintf("%s'%s' => %s,", $this->getIndentation(), $member->getName(), preg_match('|' . preg_quote('[]') . '|', $member->getMemberType()) ? 'array()' : "''"); } $code[] = ');'; return implode("\n", $code); }
public function outputFunctions(ClassEntity $entity) { $definitions = ''; $members = $entity->getMembers(); foreach ($members as $member) { switch ($member->getType()) { case 'getter': $parts = array('doc' => array('Get the ' . $member->getName(), '', '@return ' . $member->getMemberType() . ' The ' . $member->getName()), 'signature' => $signature = $member->getAccess() . ' function get' . ucfirst($member->getName()) . '()', 'body' => array('return $this->' . $member->getname() . ';')); break; case 'setter': // if the type starts with a capital letter it's a classname, and we add it to the setter signature $typedSet = ucfirst($member->getMemberType()) == $member->getMemberType(); $parts = array('doc' => array('Set the ' . $member->getName(), '', '@param ' . $member->getMemberType() . ' $' . $member->getName() . ' The ' . $member->getName(), '@return ' . $entity->getName()), 'signature' => $signature = $member->getAccess() . ' function set' . ucfirst($member->getName()) . '(' . ($typedSet ? $member->getMemberType() . ' ' : '') . '$' . $member->getName() . ')', 'body' => array('$this->' . $member->getname() . ' = $' . $member->getName() . ';', '', 'return $this;')); break; case 'function': $parts = array('doc' => array($member->getName()), 'signature' => $signature = $member->getAccess() . ' function ' . $member->getName() . '()', 'body' => array()); break; default: $parts = array(); break; } if (empty($parts)) { continue; } // output $definitions .= $this->getIndentation() . "/**\n"; foreach ($parts['doc'] as $docLine) { $definitions .= $this->getIndentation() . " * " . $docLine . "\n"; } $definitions .= $this->getIndentation() . " */\n"; $definitions .= $this->getIndentation() . $parts['signature'] . "\n"; $definitions .= $this->getIndentation() . "{\n"; foreach ($parts['body'] as $bodyLine) { $definitions .= $this->getIndentation(2) . $bodyLine . "\n"; } $definitions .= $this->getIndentation() . "}\n"; $definitions .= "\n"; } return $definitions; }