Форматирование декларации ассоциативного массива - PullRequest
9 голосов
/ 19 июля 2009

Когда вы объявляете ассоциативный массив, как вы справляетесь с отступом элементов массива? Я видел много разных стилей (синтаксис 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 ]

10 голосов
/ 19 июля 2009

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

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

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

6 голосов
/ 19 июля 2009

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

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

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

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

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

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

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

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

2 голосов
/ 19 июля 2009

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

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

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

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

1 голос
/ 20 июля 2009

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

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

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

1 голос
/ 19 июля 2009

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

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

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

'KeyOne'       => 'Value1',
'KeyTwo'       => 'Value2',
'KeyTwelve'    => 'Value12',
1 голос
/ 19 июля 2009

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

$array = array('Foo' => 'Bar',
               'Baz' => 'Qux');
0 голосов
/ 25 ноября 2014

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

...