Могу ли я поставить разрыв на одной линии - PullRequest
0 голосов
/ 23 марта 2010

У меня есть оператор switch, который содержит более 300 операторов case.

  case 'hello': 
    { $say = 'some text'; }
        break;

case 'hi':
    { $say = 'some text'; }
        break;

Почему разрыв всегда находится на отдельной строке? Это обязательно? Есть ли что-то синтаксически неправильное во мне, делающем это:

  case 'hello': { $say = 'some text'; } break;
  case 'hi': { $say = 'some text'; } break;

Ответы [ 5 ]

3 голосов
/ 23 марта 2010

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

Тем не менее, вы рассматривали вопрос, вместо того, чтобы иметь 300 статусов переключения регистра, вы используете другой метод. Карта ключей к значениям (с использованием массива) будет быстрее и удобнее в обслуживании.

$myArray = array(
    'hello' => 'some text',
    'hi'    => 'some text',
);

if ( isset($myArray[$switchKey]) ){
    $say = $myArray[$switchKey];
}else{
    //default case
}
1 голос
/ 23 марта 2010

Оба ваших примера возможны.Кстати, я не думаю, что скобки необходимы в этом случае, вы также можете написать:

switch ($myVar) {
    case 'hello': $say = 'some text'; break;
    case 'hi': $say = 'some text'; break;
    default: $say = 'something'; break;
}
1 голос
/ 23 марта 2010

Нет, PHP нечувствителен к пробелам.Точки с запятой и фигурные скобки - отдельные операторы.

Разрыв обычно находится на отдельной строке, потому что лучше не размещать несколько операторов в одной строке, а сделать поток управления оператора switch понятным.*

0 голосов
/ 23 марта 2010

в качестве отступления, я бы предложил использовать что-то вроде php_codesniffer, чтобы посоветовать вам переписывать стили.

0 голосов
/ 23 марта 2010

Да, вы можете поместить оператор break в блок case, он просто ищет оператор break
, чтобы закрыть регистр переключателя.

...