- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/orm/objectify/entityobject.php
- Класс: BitrixMainORMObjectifyEntityObject
- Вызов: EntityObject::collectValues
public function collectValues($valuesType = Values::ALL, $fieldsMask = FieldTypeMask::ALL, $recursive = false)
{
switch ($valuesType)
{
case Values::ACTUAL:
$objectValues = $this->_actualValues;
break;
case Values::CURRENT:
$objectValues = $this->_currentValues;
break;
default:
$objectValues = array_merge($this->_actualValues, $this->_currentValues);
}
// filter with field mask
if ($fieldsMask !== FieldTypeMask::ALL)
{
foreach ($objectValues as $fieldName => $value)
{
$fieldMask = $this->entity->getField($fieldName)->getTypeMask();
if (!($fieldsMask & $fieldMask))
{
unset($objectValues[$fieldName]);
}
}
}
// recursive convert object to array
if ($recursive)
{
foreach ($objectValues as $fieldName => $value)
{
if ($value instanceof EntityObject)
{
$objectValues[$fieldName] = $value->collectValues($valuesType, $fieldsMask, $recursive);
}
elseif ($value instanceof Collection)
{
$arrayCollection = [];
foreach ($value as $relationObject)
{
$arrayCollection[] = $relationObject->collectValues($valuesType, $fieldsMask, $recursive);
}
$objectValues[$fieldName] = $arrayCollection;
}
}
}
// remap from uppercase to real field names
$values = [];
foreach ($objectValues as $k => $v)
{
$values[$this->entity->getField($k)->getName()] = $v;
}
return $values;
}