JAVA开发 加入小组

195个成员 1344个话题 创建时间:2011-10-16

怎么消除代码中的if else ,求大神

发表于 2013-09-06 4580 次查看

class OptoolLib_Utils_PromoCardHelper_PromoCardValidateHelper
{

protected static $validatorPool = array();

public static function Instance(array $roles)
{
if (empty($roles)) {
throw new Exception('用户权限不能为空!');
}
$poolKey = implode('_', $roles);
if (!self::$validatorPool[$poolKey]) {
self::$validator = $this->getValidator($roles);
}
return self::$validator;
}

private function getValidator(array $roles)
{
if (in_array(OptoolLib_User::GROUP_NAME_ADMIN, $roles)||in_array(OptoolLib_User::GROUP_NAME_PM, $roles)
||in_array('cs_director', $roles)) {

$validator = new OptoolLib_Utils_PromoCardHelper_PromoCardValidateHighPermission();

} else if(in_array(OptoolLib_User::GROUP_NAME_CS_MANAGER, $roles)) {

$validator = new OptoolLib_Utils_PromoCardHelper_PromoCardValidateCsManerage();

} else if(in_array(OptoolLib_User::GROUP_NAME_MARKETING_BD, $roles)) {

 

} else if(in_array(OptoolLib_User::GROUP_NAME_CS_VIP, $roles)) {

 

} else if(in_array(OptoolLib_User::GROUP_NAME_CS, $roles)) {


} else {
throw new Exception('您的权限不足!');
}

if (!$validator instanceof OptoolLib_Utils_PromoCardHelper_PromoCardValidatorInterface) {
 throw new Exception('验证类必须继承    OptoolLib_Utils_PromoCardHelper_PromoCardValidatorInterface');
}

return $validator;
}

}

 

不能用MAP,悲剧

1回复
  • 2楼 kent 2013-09-06

    $map=array(0->array(matchString->class,....), 1->array(matchString->class,.......).....)

    foreach($map as $items) {

        foreach($items as $itemkey=>$value){

            if(inarray($itemkey,roles)) return new $value();

       }

    }

发表回复
功能维护升级中,维护完成完后将再次开放,非常抱歉给您学习造成的不便。