27 окт. 2013
Очень часто возникает необходимость в использовании оператора switch для определения поведения функций. Порой требуется перебрать множество вариантов, в таком случае стандартная конструкция становится неоправданно "громоздкой". В этом случае есть простая и элегантная замена, которая поможет сократить время написания кода и сделает его более лаконичным.
Ниже приведен универсальный пример, который может быть использован где угодно:
<?php
/**
* Возвращает PDO константу связанную с переменной
*
* @param string $type Переменная, которую необходимо проверить
*
* @return int PDO константа
*/
public
static
function
getBindConstant(
$type
)
{
switch
(
$type
) {
case
'bool'
:
return
PDO::PARAM_BOOL;
break
;
case
'int'
:
return
PDO::PARAM_INT;
break
;
case
'null'
:
return
PDO::PARAM_NULL;
break
;
case
'string'
:
default
:
return
PDO::PARAM_STR;
break
;
}
}
// код после рефакторинга:
public
static
function
getBindConstant(
$type
)
{
$match
= [
'bool'
=> PDO::PARAM_BOOL,
'int'
=> PDO::PARAM_INT,
'null'
=> PDO::PARAM_NULL,
'string'
=> PDO::PARAM_STR,
];
return
isset(
$match
[
$type
]) ?
$match
[
$type
] : PDO::PARAM_STR;
}