data; $hasToArray = function ($model) { return is_object($model) && method_exists($model, 'toArray') && is_callable([$model, 'toArray']); }; foreach ($data as $key => $value) { if ($hasToArray($value)) { $data[$key] = $value->toArray(); } elseif (is_array($value)) { foreach ($value as $nestedKey => $nestedValue) { if ($hasToArray($nestedValue)) { $value[$nestedKey] = $nestedValue->toArray(); } } $data[$key] = $value; } } return $data; } /** * Retrieves a value from the data array if set, or null otherwise. * * @param string $key * @return mixed|null */ protected function get($key) { return $this->data[$key] ?? null; } }