public static function object2form($object, Form $form, $ignoreNull = true) { Assert::isTrue(is_object($object)); $primitives = $form->getPrimitiveList(); if ($object instanceof Prototyped) { $proto = $object->proto(); foreach (array_keys($proto->getExpandedPropertyList()) as $name) { if ($form->primitiveExists($name)) { $proto->importPrimitive($name, $form, $form->get($name), $object, $ignoreNull); } } } else { $class = new ReflectionClass($object); foreach ($class->getProperties() as $property) { $name = $property->getName(); if (isset($primitives[$name])) { $getter = 'get' . ucfirst($name); if ($class->hasMethod($getter)) { $value = $object->{$getter}(); if (!$ignoreNull || $value !== null) { $form->importValue($name, $value); } } } } } }