0

我有一个实体,比如说“客户”,这个实体有 3 种可能的状态:activeinactivedeleted

这 3 个状态处理 3 个标签:ActiveInactiveDeleted,它们用于表单、详细信息以及可能在列表中,所以我们有一个公共数组:

array(
   'active' => 'Active',
   'inactive' => 'Inactive',
   'deleted' => 'Deleted
);

我通常做的是在一个名为getAcceptedStatus的方法中处理这个问题,该方法返回这个值,但后来我发现我必须做这样的事情:

$acceptedStatus = $customer->getAcceptedStatus();
echo $acceptedStatus[$customer->getStatus()];

而且我觉得它不够好。你(你会)如何处理它?我应该创建一个直接返回标签的方法吗?

4

1 回答 1

0

为什么不让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;
  }

  // ...
}
于 2013-09-23T17:34:08.110 回答