Подтвердить что ты не робот

Почему примеры массива PHP оставляют трейлинг-запятую?

Я видел примеры вроде:

$data = array(
   'username' => $user->getUsername(),
   'userpass' => $user->getPassword(),
   'email' => $user->getEmail(),
);

Однако на практике у меня всегда не оставлена ​​конечная запятая. Я что-то делаю неправильно, или это просто "другой" способ сделать это? Если бы я использовал фреймворк, не имевший бы заднюю запятую влиять на формирование кода отрицательно? Я видел использование конечных запятых в объявлениях массивов на других языках (Java, С++), поэтому я предполагаю, что причины оставлять запятые не являются специфическими для PHP, но это вызвало мой интерес.

4b9b3361

Ответ 1

Почему примеры массива PHP оставляют трейлинг-запятую?

Потому что они могут.:) Запись PHP для массива:

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

Серьезно, это полностью для удобства, поэтому вы можете легко добавить еще один элемент в массив без предварительного добавления конечной запятой к последней записи.

Говоря о других языках: будьте осторожны с этим в JavaScript. Firefox будет мягко переносить конечные запятые; Internet Explorer, по правде говоря, выкинет ошибку.

Ответ 2

Это хорошая практика при определении массива на нескольких строках. Он также поощряется стандартами кодирования ZendFramework:

При использовании этой последней декларации мы рекомендуется использовать запятую для последний элемент массива; это минимизирует влияние добавления новых пунктов на последовательных линиях и помогает для обеспечения отсутствия ошибок анализа из-за отсутствующая запятая.

Ответ 3

Я заметил при работе с контролем версий (git), что если мы добавим 1 вещь в массив и у нас нет конечной запятой, это будет выглядеть так, как будто мы изменили 2 строки, потому что запятая должна была быть добавлена ​​к предыдущая строка. Я считаю, что это выглядит плохо и может вводить в заблуждение при просмотре изменений файла, и по этой причине я думаю, что конечная запятая - это хорошо.

Ответ 4

Потому что он сохраняет элементы равномерными.

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

Если последний элемент не может иметь запятую, то вам придется поддерживать последнюю запятую, изменяя записи. Это бессмысленное упражнение и пустая трата времени и ударов пальцев, потому что намерение поменять или изменить записи уже выполнено.

Предоставляя конечную запятую на последнем элементе, она освобождает программиста от стремления к этой досадной и бесплодной детализации.

Ответ 5

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

Ответ 6

Я чувствую, что, хотя это разрешено, это плохая практика, ее как бы исключение из последней половины двоеточия ваших функций и циклов.

Ответ 7

Причина в фиксации изменений.

Если вам нужно добавить запятую при добавлении нового элемента. Вы меняете 1 строку и добавляете 1 строку. (- ++)

При добавлении нового элемента, когда запятая уже находится в строке выше. Есть только 1 добавленная строка, и никаких измененных. (+)

Ответ 8

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

Ответ 9

Это меня недавно удивило, но это имеет смысл. Я долго пытался придерживаться более раннего соглашения, которое выполняет ту же самую вещь, которая состоит в том, чтобы поместить разделительную запятую перед каждой записью, а не в конце.

$data = array(
   'username' => $user->getUsername()
 , 'userpass' => $user->getPassword()
 , 'email' => $user->getEmail()
);

Запятые также все выстраиваются таким образом, что выглядит красиво, но это может сделать отступ немного неловким. Может быть, по этой причине, кажется, что за эти годы это не завоевало особого внимания, и у меня были другие вопросы, почему я это делаю. Я думаю, что PHP-решение является хорошим компромиссом, и в любом случае, оно, по-видимому, сейчас является приемлемым решением.

Ответ 10

Я всегда добавляю запятые в начале новой записи. Компиляторы видят его как односимвольный токен прогнозирования, который говорит: "есть еще один". Я не знаю, используют ли современные компиляторы LR (1) (рекурсивный влево, просмотр с одним токеном), но я думаю, что там, где возникает синтаксическая ошибка, когда после запятой нет ничего. Редко когда я когда-либо соглашался со мной другим разработчиком, но похоже, что ДжонБрукинг согласен!