用于配对API调用的Doctrine setter方法最佳实践

时间:2014-07-08 19:24:48

标签: php api doctrine-orm

我有一个表格,用于跟踪存储在第三方数据库中的客户状态。只有在我可以通过API调用成功更新其他数据库时,才应更新我的表。

使用Doctrine时,将API调用添加到实体类的setter方法中是不是一种坏习惯?例如:

public function setCustomerStatus( $cusotmerStatus )
{
   $api = new externalApi();
   if( $api->updateStatus( $customerStatus ) )
   {
      $this->customerStatus = $customerStatus;
   }
   else
   {
      return 'Could not update customer status';
   }
}

1 个答案:

答案 0 :(得分:0)

如果您有一个只能在特定条件下设置的实体字段,您有两个选项;要么在更新之前进行检查:

if($api->updateStatus($customerStatus){
    $entity->setCustomerStatus($customerStatus);
}

或者,在实体中进行检查,例如您在set方法中进行的检查。在set方法中包含它的优点是你不会留下错误的余地;不熟悉的开发人员可能不知道在调用set方法之前运行检查,或者你可能会忘记。因此,如果您可以保证始终需要检查,我更喜欢您选择的选项