public function doGetFieldDefinitions($def = null, $fields = [])
{
if ($def === null) {
$def = $this->getChilds();
}
if (is_array($def)) {
foreach ($def as $child) {
$fields = array_merge($fields, $this->doGetFieldDefinitions($child, $fields));
}
}
if ($def instanceof Object\ClassDefinition\Layout) {
if ($def->hasChilds()) {
foreach ($def->getChilds() as $child) {
$fields = array_merge($fields, $this->doGetFieldDefinitions($child, $fields));
}
}
}
if ($def instanceof Object\ClassDefinition\Data) {
$fields[$def->getName()] = $def;
}
return $fields;
}