$kind) { $value = $this->factory->generate($kind, $model, $this); $setter = 'set' . ucfirst(static::camelize($key)); // check if there is a setter and use it instead if ($model instanceof Entity && is_callable([$model, $setter])) { $model->$setter($value); } elseif (method_exists($model, $setter) && is_callable([$model, $setter])) { $model->$setter($value); } else { $model->$key = $value; } } } }