Очень часто возникает необходимость в использовании оператора switch для определения поведения функций. Порой требуется перебрать множество вариантов, в таком случае стандартная конструкция становится неоправданно "громоздкой". В этом случае есть простая и элегантная замена, которая поможет сократить время написания кода и сделает его более лаконичным.

Ниже приведен универсальный пример, который может быть использован где угодно:

  1. <?php
  2.   
  3. /**
  4. * Возвращает PDO константу связанную с переменной
  5. *
  6. * @param string $type Переменная, которую необходимо проверить
  7. *
  8. * @return int PDO константа
  9. */
  10. public static function getBindConstant($type)
  11. {
  12. switch ($type) {
  13. case 'bool':
  14. return PDO::PARAM_BOOL;
  15. break;
  16. case 'int':
  17. return PDO::PARAM_INT;
  18. break;
  19. case 'null':
  20. return PDO::PARAM_NULL;
  21. break;
  22. case 'string':
  23. default:
  24. return PDO::PARAM_STR;
  25. break;
  26. }
  27. }
  28.   
  29. // код после рефакторинга:
  30.   
  31. public static function getBindConstant($type)
  32. {
  33. $match = [
  34. 'bool' => PDO::PARAM_BOOL,
  35. 'int' => PDO::PARAM_INT,
  36. 'null' => PDO::PARAM_NULL,
  37. 'string' => PDO::PARAM_STR,
  38. ];
  39. return isset($match[$type]) ? $match[$type] : PDO::PARAM_STR;
  40. }