public function hydrate($entity, $data) { if (is_array($data) && !\Webforge\Common\ArrayUtil::isNumeric($data)) { // numeric bedeutet composite key (z.b. OID) return $this->getRepository($entity)->hydrateBy($data); } else { return $this->getRepository($entity)->hydrate($data); } }
public function walkArrayValue($phpValue, Type $type) { $isList = $type->isList() !== NULL ? $type->isList() : \Webforge\Common\ArrayUtil::isNumeric($phpValue); if ($isList) { return $this->walkListValue((array) $phpValue, $type); } else { return $this->walkHashMapValue((object) $phpValue, $type); // alternativ: doch lValue übergeben und lValue->castToHashMap() oder sowas haben } }
/** * @return array */ protected function parseParams($input) { $params = json_decode($json = $input->getArgument('parametersJSON')); if ($params === NULL) { throw new \InvalidArgumentException(sprintf("parametersJSON muss valides JSON sein: '%s' wurde übergeben", $json)); } $params = (array) $params; if (\Webforge\Common\ArrayUtil::isNumeric($params)) { throw new \InvalidArgumentException(sprintf("parametesrJSON muss ein object sein, mit constructorParameterName => value oder propertyName => value")); } return $params; }
/** * @param mixed[] $columns die Spalten in der richtigen Reihenfolge */ public function addRow(array $row) { $this->init(); $names = array_keys($this->columns); if (!A::isNumeric($row)) { throw new InvalidArgumentException('Bis jetzt nur numerische Arrays. Die Reihenfolge ist: ' . implode(', ', $names)); } if (count($row) !== count($names)) { throw new InvalidArgumentException('Spalten für addRow haben nicht die richtige Anzahl. Die Reihenfolge ist: ' . implode(', ', $names)); } $grid = $this->getGrid(); $grid->tr(); foreach ($row as $index => $value) { $column = $this->getColumn($names[$index]); // validate wäre schön nach type? $td = $grid->td()->setContent($value)->addClass($this->classify($column->getName()))->addClass($column->getClasses()); } $grid->tr(); return $this; }