Форматирование декларации ассоциативного массива

Когда вы объявляете ассоциативный массив, как вы обрабатываете отступ элементов массива? Я видел много разных стилей (синтаксис PHP, так как это то, чем я был в последнее время). Это довольно придирчиво и тривиально, так что двигайтесь дальше, если вы заинтересованы в более серьезных занятиях.

1) Отступ элементов еще на один уровень:

$array = array(
    'Foo' => 'Bar',
    'Baz' => 'Qux'
    );

2) Отступ элементов двух уровней:

$array = array(
        'Foo' => 'Bar',
        'Baz' => 'Qux'
        );

3) Отступ элементов за пределами конструктора массива с закрывающей фигурной скобкой, выровненной по началу конструктора:

$array = array(
            'Foo' => 'Bar',
            'Baz' => 'Qux'
        );

4) Отступ элементов вне конструкции массива, с закрывающей скобкой, выровненной с открывающей скобкой:

$array = array(
            'Foo' => 'Bar',
            'Baz' => 'Qux'
              );

Лично мне нравится #3 - широкие отступы проясняют, что мы находимся в точке разрыва в коде (строим массив), а закрывающая скобка, плавающая немного слева от всех данных массива, проясняет это что это заявление сделано.

7 ответов

Решение

Лично я всегда хожу

$array = array(
  '1' => '2',
  3 => 4,
);

Отступ - один уровень табуляции (обычно 4 пробела, иногда 2). Я ненавижу чрезмерное пустое пространство. Это хорошо работает с вложенными массивами.

Я обычно использую этот вид отступа для объявлений массива:

function test()
{
    $my_array = array(
        'a' => 1,
        'bcdef' => 2,
        'gh' => array(
            'glop',
            'test'
        ),
        'ijk' => 20,
    );
}

Очень похоже на #1, но с этим отличием:

  • финал } не отступает

Я никогда не ставлю много мест вокруг=>'чтобы выровнять значения (как предложил ennuikiller): я считаю, что это действительно трудно читать, и часто мои глаза прыгают к неправильному значению ^^

Также обратите внимание, что я всегда ставлю,в конце последнего объявления:

  • это совершенно верно
  • вам не нужно добавлять его, когда вы добавляете еще одну строку в массив
  • когда вы добавляете одну строку в конец массива, вы модифицируете только одну строку: ту, которую вы добавляете (и, определенно, не ту, что была ранее, чтобы добавить ',', поскольку она уже есть); это помогает в случае различий и исправлений: меньше измененных строк, легче читать

Еще одна вещь: это то, что я делаю, когда работаю над проектом, в котором не указаны правила форматирования; иначе я стараюсь уважать их настолько, насколько это возможно (чтобы форматирование было согласованным между членами команды проекта)

Обычно я использую многострочный формат для ассоциативного массива, только если он нетривиален в смысле кодирования, т.е. что-то, на что полезно ссылаться при чтении кода. В противном случае (если это короткий массив), я помещу его в одну строку.

Если он длинный или нетривиальный, моя IDE (Eclipse в данный момент, пока я не могу выбрать подходящую альтернативу) обрабатывает большую часть форматирования для меня. В целом получается аналогично вашему первому примеру с одним уровнем отступа:

$array = array(
    'Foo' => 'Bar',
    'Baz' => 'Qux'
    );

Я вырос, чтобы предпочесть это так. Один уровень отступа - действительно все, что нужно, и создает больше горизонтального пространства.

Очень полезно. Обсуждаются все хорошие стили кодирования PHP.
http://framework.zend.com/manual/1.12/en/coding-standard.coding-style.html

Мне нравится:

$array = array('Foo' => 'Bar',
               'Baz' => 'Qux');

Помимо отступов, существуют также проблемы выравнивания значений, поскольку ключи, скорее всего, будут иметь неодинаковую длину (по крайней мере, некоторые из них). Так, например, как вы справляетесь с чем-то вроде этого:

'KeyOne' => 'Value1',
'KeyTwo' => 'Value2',
'KeyTwelve' => 'Value12',

В таких случаях я обычно выделяю жирную стрелку как минимум на 2 вкладки, чтобы получить что-то вроде этого:

'KeyOne'       => 'Value1',
'KeyTwo'       => 'Value2',
'KeyTwelve'    => 'Value12',

Я иду с одним, который похож на #4:

$array = array('Foo' => 'Bar',
               'Baz' => 'Qux'
               'Moo' => 'Cow');

Я думаю, что этот метод облегчает видимость элементов в массиве, что особенно полезно, когда массив больше 10 элементов.

Другие вопросы по тегам