我有一个表格,用于跟踪存储在第三方数据库中的客户状态。只有在我可以通过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';
}
}
答案 0 :(得分:0)
如果您有一个只能在特定条件下设置的实体字段,您有两个选项;要么在更新之前进行检查:
if($api->updateStatus($customerStatus){
$entity->setCustomerStatus($customerStatus);
}
或者,在实体中进行检查,例如您在set方法中进行的检查。在set方法中包含它的优点是你不会留下错误的余地;不熟悉的开发人员可能不知道在调用set方法之前运行检查,或者你可能会忘记。因此,如果您可以保证始终需要检查,我更喜欢您选择的选项