在何处查找属性的可接受值[PHP优先,但可考虑用于所有语言]

在何处查找属性的可接受值[PHP优先,但可考虑用于所有语言],php,class,dependencies,entities,Php,Class,Dependencies,Entities,我有一个实体,比如说“客户”,这个实体有3种可能的状态:活动的,不活动的和删除的 这3个状态处理3个标签:活动的、不活动的和删除的,它们在表单中、细节中以及可能在列表中使用,因此我们有一个通用数组: array( 'active' => 'Active', 'inactive' => 'Inactive', 'deleted' => 'Deleted ); 我通常用一个名为getAcceptedStatus的方法来处理这个问题,该方法返回这个值,但后来我发现

我有一个实体,比如说“客户”,这个实体有3种可能的状态:活动的不活动的删除的

这3个状态处理3个标签:活动的不活动的删除的,它们在表单中、细节中以及可能在列表中使用,因此我们有一个通用数组:

array(
   'active' => 'Active',
   'inactive' => 'Inactive',
   'deleted' => 'Deleted
);
我通常用一个名为getAcceptedStatus的方法来处理这个问题,该方法返回这个值,但后来我发现我必须这样做:

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

我觉得还不够好。你(会)怎么处理?我应该创建一个直接返回标签的方法吗?

为什么不让
状态本身成为一个实体呢

通过这种方式,您可以为customers 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);

}      
然后在customer类中键入hint:

class Customer {
  // ...
  public function getStatus() {
    return $this->status;
  }

  public function setStatus(CustomerStatus $status) {
   $this->status = $status;
  }

  // ...
}