Blast\Orm\Hydrator\EntityHydrator::extract PHP Method

extract() public method

Extract values from given object
public extract ( ) : array
return array
    public function extract()
    {
        $entity = clone $this->provider->getEntity();
        // extract from array object
        // ignore further extraction strategy
        if (method_exists($entity, 'populate') || method_exists($entity, 'exchangeArray')) {
            $hydrator = $this->getArraySerizableHydrator();
            return $this->underscorizeKeys($hydrator->extract($entity));
        }
        // extract data from class getters and properties
        $propertyHydrator = $this->getObjectPropertyHydrator();
        $classMethodHydrator = $this->getClassMethodsHydrator();
        // get a full set of original names, camelize keys and underscrorize keys
        $extractedDataSet = array_replace($propertyHydrator->extract($entity), $classMethodHydrator->extract($entity), $this->camelizeKeys($propertyHydrator->extract($entity)), $this->camelizeKeys($classMethodHydrator->extract($entity)), $this->underscorizeKeys($propertyHydrator->extract($entity)), $this->underscorizeKeys($classMethodHydrator->extract($entity)));
        $fields = $this->provider->getDefinition()->getFields();
        $extractedData = [];
        foreach ($extractedDataSet as $key => $value) {
            if (array_key_exists($key, $fields)) {
                $extractedData[$key] = $value;
            }
        }
        return $extractedData;
    }