此代碼是否適合策略模式?你會在這裏使用策略模式嗎?
public function isValidEmail($email, $organization)
{
switch ($organization) {
case 'USAF':
case 'Army':
case 'USMC':
case 'Navy':
case 'SOCOM':
return (preg_match('/[.]mil$/i', $email) === 1);
break;
case 'Federal Gov.':
return (preg_match('/[.]gov$/i', $email) === 1);
break;
case 'State/Local Gov.':
$regionCollection = Mage::getModel('directory/region')
->getResourceCollection()
->addCountryFilter(array('US'))
->load();
$stateAbbr = array();
// Cycle through state abbreviations for match
foreach ($regionCollection as $region) {
$stateAbbr[] = strtolower($region->getCode());
}
$states = implode('|', $stateAbbr);
return (preg_match("/[\.|@]{1}($states){1}\.us$/i", $email) ===
break;
case 'USCG':
case 'DOD':
case 'Defense Industry':
return true;
break;
default:
return false;
break;
}
// It got past somehow?
return false;
}
我是假設你可以有一個簡單的界面來定義一個validate方法,但我對如何處理這兩個怪球的情況下在返回真/假瓦特/沒有電子郵件邏輯switch語句稍有困惑。
interface ValidInterface
{
public function isValid($email);
}
''return'後面不需要'break'。 – xdazz
使用'\ .'而不是'[。]'。它更清晰,更簡潔。 –