Php if(array_key_)的多次使用。在我的模型构造函数中,如何使它更干净?

Php if(array_key_)的多次使用。在我的模型构造函数中,如何使它更干净?,php,laravel,refactoring,Php,Laravel,Refactoring,我目前正在研究我的一个大模型,如果在提供的属性中提供了参数,那么它必须实例化并附加许多其他相关模型 下面是它现在的一个片段 public function __construct($input) { parent::__construct($input); $this->fill($input); $this->save(); $this->initializeSomeValues($input); $this->thingie()->save(

我目前正在研究我的一个大模型,如果在提供的属性中提供了参数,那么它必须实例化并附加许多其他相关模型

下面是它现在的一个片段

public function __construct($input)
{
  parent::__construct($input);
  $this->fill($input);
  $this->save();
  $this->initializeSomeValues($input);
  $this->thingie()->save(new SuperThingie());
  if(array_key_exists ('client_image', $input)) $this->clientImage()->save(new ClientImage($input['client_image']));
  if(array_key_exists ('client_names', $input)) $this->initializeClientNames($input);
  if(array_key_exists ('client_saiyan_level', $input)) $this->clientSaiyanLevel()->save(new ClientSaiyanLevel($input['client_saiyan_level']));
//...
}
你明白了,我有更多这样的东西,但没那么漂亮,也许有人有办法让它更干净

提前感谢各位抽出时间


Martin

如果你想得到一个非常干净的代码,你可以使用复合模式。在if之后,你在每种情况下都做了不同的事情,所以清理这么多可能不是那么容易。但是,如果你后退一步,找出为什么你必须不断检查数组键是否存在,也许你能找到它有一个更干净的解决方案。例如,从$input数组的生成开始,也许有一种方法不只是把所有的东西都放进去?只是把建议扔出去谢谢你的洞察力,我通过提取其他各种函数中的所有东西使它更干净。我相信有更好的方法,但代码非常干净既然如此,那就足够了!