• Модуль: 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;
}