Если они названы так же, как показано в вашем коде, то, содержащее Insurance
, вызовет handleInsurance
, et c. затем просто получите термин и используйте его в вызове метода:
preg_match('/Insurance|Pension/', $crmMapKey, $match);
$returnArray[] = $this->{'handle'.$match[0]}($item);
Если нет, то вы можете использовать массив поиска:
$lookup = ['Insurance' => 'doSomething', 'Pension' => 'doAnotherThing'];
preg_match('/Insurance|Pension/', $crmMapKey, $match);
$returnArray[] = $this->{'handle'.$lookup[$match[0]]}($item);
Или использовать ключи в шаблоне, чтобы вы нужно только изменить массив:
preg_match('/'.implode('|', array_keys($lookup)).'/', $crmMapKey, $match);
switch
, о котором я упоминал в комментарии, может быть не лучшим, но работает:
switch(true) {
case strpos($crmMapKey, "Insurance") !== false;
$returnArray[] = $this->handleInsurance($item);
break;
case strpos($crmMapKey, "Pension") !== false;
$returnArray[] = $this->handlePension($item);
break;
//etc...
}