我有一个实体,假设"客户",这个实体有 3 种可能的状态:活动、非活动和已删除。
这 3 个状态处理 3 个标签:活动、非活动和已删除,它们用于表单、详细信息以及可能在列表中,所以我有一个通用数组:
array(
'active' => 'Active',
'inactive' => 'Inactive',
'deleted' => 'Deleted
);
我通常做的是在一个名为getAcceptStatus的方法中处理这个问题,该方法返回此值,但后来我发现我必须做这样的事情:
$acceptedStatus = $customer->getAcceptedStatus();
echo $acceptedStatus[$customer->getStatus()];
我觉得它不够好。你(你会)如何处理它?我应该创建一个直接返回标签的方法吗?
为什么不让status
本身成为一个实体呢?
这样,您可以为客户状态属性分配一个对象实例,而不是弄乱字符串。
abstract class Status
{
protected $id;
protected $name;
public function getId();
public function setId($id);
public function getName();
public function setName($name);
}
class CustomerStatus extends Status
{
protected $label;
public function getLabel()
{
return $this->label;
}
public function setLabel($label);
}
然后在客户类中键入提示:
class Customer {
// ...
public function getStatus() {
return $this->status;
}
public function setStatus(CustomerStatus $status) {
$this->status = $status;
}
// ...
}