attribute_name = $attribute_name; $this->getRelationFn = $getRelationFn; $this->original_attribute = $original_attribute; } /** * @param array $values * @return array */ protected function unsetOriginalAttribute(array $values) { if (isset($values[$this->original_attribute])) unset($values[$this->original_attribute]); return $values; } /** * @param array $values * @param string $expand * @return array */ public function serialize(array $values, string $expand): array { $values = $this->unsetOriginalAttribute($values); $callback = $this->getRelationFn; $values[$this->attribute_name] = SerializerRegistry::getInstance()->getSerializer($callback($this))->serialize(AbstractSerializer::filterExpandByPrefix($expand, $this->attribute_name)); return $values; } }