PHP 어레이의 예에서는 왜 말미에 쉼표가 남습니까?
다음과 같은 예를 본 적이 있습니다.
$data = array(
'username' => $user->getUsername(),
'userpass' => $user->getPassword(),
'email' => $user->getEmail(),
);
그러나 실제로 나는 항상 쉼표를 남기지 않았다.제가 뭘 잘못하고 있는 건가요, 아니면 그냥 '다른' 방식으로 하는 건가요?프레임워크를 사용할 경우 후행 콤마가 코드 생성에 부정적인 영향을 미치지 않습니다.다른 언어(Java, C++)에서도 어레이 선언에 후행 콤마를 사용하는 것을 본 적이 있기 때문에 후행 콤마를 남기는 이유는 PHP에 한정되지 않는다고 생각합니다만, 이 점이 흥미를 끌었습니다.
PHP 어레이의 예에서는 왜 말미에 쉼표가 남습니까?
이는 가능하기 때문입니다. :) 어레이의 PHP Manual 엔트리는 다음과 같습니다.
마지막으로 정의된 어레이 항목 뒤에 쉼표를 붙이는 것은 드물지만 유효한 구문입니다.
이는 전적으로 편의를 위한 것이므로 먼저 마지막 엔트리에 후행 콤마를 추가할 필요 없이 어레이에 다른 요소를 쉽게 추가할 수 있습니다.
다른 언어 얘기가 나와서 말인데:JavaScript에서는 이 점에 주의하십시오.일부 오래된 브라우저에서는 오류가 발생하지만 일반적으로 새 브라우저에서는 오류가 발생합니다.
이는 여러 줄에 어레이를 정의할 때 좋은 방법입니다.또한 Zend Framework의 코딩 표준에도 고무되어 있습니다.
후자의 선언을 사용할 때는 배열의 마지막 항목에 후행 콤마를 사용하는 것이 좋습니다.이것에 의해, 연속하는 행에 새로운 항목을 추가할 때의 영향이 최소한으로 억제되어 콤마가 없어져 해석 에러가 발생하지 않게 됩니다.
버전 컨트롤(git)을 조작했을 때, 어레이에 1개를 추가하고, 말미에 콤마를 붙이지 않으면 앞줄에 콤마를 붙여야 했기 때문에 2줄을 수정한 것처럼 보이는 것을 알 수 있었습니다.파일 변경 내용을 보면 보기 흉하고 오해의 소지가 있기 때문에 쉼표 뒤에 오는 것이 좋다고 생각합니다.
엔트리를 균일하게 유지하기 때문입니다.
순서를 바꾸거나 엔트리를 추가하거나 삭제해야 하는 경우 쉼표 뒤에 콤마를 남길 수 있는 것이 매우 편리합니다.
마지막 요소에 쉼표를 사용할 수 없는 경우 엔트리를 수정하여 마지막 쉼표를 유지해야 합니다.엔트리를 바꾸거나 수정하려는 의도는 이미 달성되었기 때문에 이것은 무의미한 연습이고 시간과 손가락 스트로크를 낭비하는 것입니다.
마지막 요소에 쉼표를 붙임으로써 프로그래머가 번거롭고 성과가 없는 디테일을 처리해야 하는 번거로움에서 해방됩니다.
이유는 commit changes입니다.
새 요소를 추가할 때 후행 쉼표를 추가해야 하는 경우.한 줄 바꿔서 한 줄 더하는 거야. (++)
위의 행에 쉼표가 이미 있을 때 새 요소를 추가하는 경우.추가된 행은 1개뿐이며 변경된 행은 없습니다.
다른 사람을 대신해서 말할 수는 없지만 보통 코드에 쉼표를 남깁니다.나중에 어레이에 추가할 경우 이전 줄에 쉼표를 추가하는 것을 잊어버려 쉼표가 누락될 염려가 없기 때문입니다.
새로운 어레이 요소를 추가할 때 구문 오류를 방지하는 데 도움이 되기 때문에 항상 후행 콤마를 사용합니다.그냥 좋은 연습이에요.
허용이 되어도 기능이나 루프의 마지막 반장을 빼는 것과 같은 나쁜 습관이라고 생각합니다.
roundcube 파일 설정 예(config.inc.php)를 보면 쉼표 후행과 후행 없음의 예가 있습니다.
이 배열은 활성화 또는 비활성화해야 하는 플러그인을 정의합니다.
...
// List of active plugins (in plugins/ directory)
$config['plugins'] = array(
'managesieve',
'password',
'archive',
'zipdownload',
);
...
통상, 이것은 행 단위로 행이 됩니다.또, 어레이에 무언가를 추가하고 싶은 경우는, 다음과 같이 할 수 있습니다.
...
// List of active plugins (in plugins/ directory)
$config['plugins'] = array(
'managesieve', //code by personA
'password', //code by personA
'archive', //code by personA
'zipdownload', //code by personA
'newplugin', //new code by personB
);
...
따라서, 이 코드를 커밋하면, 그 회선의 변경은 1개 밖에 표시되지 않습니다.이러한 변경은, 그 회선의 코드를 누가 변경하고 있는지를 조사할 때에, 보다 읽기 쉬워집니다.
코드의 다른 행에서는 쉼표 없이 다음과 같이 표시됩니다.
...
$config['default_folders'] = array('INBOX', 'Drafts', 'Sent', 'INBOX.spam', 'Trash');
...
일반적으로 이 코드가 자주 변경될 것으로 예상되지 않는 한 줄의 코드일 것입니다.
다른 말로 하자면:
1) 어레이를 옵션 또는 구성 파일로 사용할 경우 나중에 동적으로 변경해야 할 경우 후행 콤마를 입력합니다.또한 후행 콤마를 사용하여 해당 어레이를 프로그래밍 방식으로 변경할 경우 한 줄 코드만 변경할 수 있습니다.단, 이것이 없으면 두 줄의 코드를 처리해야 하므로 어레이를 해석하기가 더 복잡해질 수 있습니다.
2) 어레이가 일정한 배열이고 향후에 변화가 없을 경우 후행 콤마를 넣을 필요가 없습니다만, Accepted Answer에 기재된 바와 같이 후행 콤마를 넣을 수 있지만 목적이 없습니다.
최근에 깜짝 놀랐지만 말이 되네.나는 오랫동안 같은 것을 성취하는 이전의 규칙을 고수하려고 노력해왔다. 즉, 구분 쉼표는 각 엔트리의 끝이 아니라 앞에 놓는 것이다.
$data = array(
'username' => $user->getUsername()
, 'userpass' => $user->getPassword()
, 'email' => $user->getEmail()
);
쉼표도 다 저렇게 줄지어 있어서 보기엔 좋은데 들여쓰기가 좀 어색할 수 있어요.그런 이유 때문인지, 지난 몇 년 동안 별로 인기를 끌지 못한 것 같고, 다른 사람들에게 왜 그러냐고 물어보기도 했습니다.저는 PHP의 솔루션이 좋은 타협이라고 생각합니다.어쨌든 현재 받아들여지고 있는 솔루션인 것 같습니다.
새로운 엔트리의 선두에 항상 콤마를 추가해 왔습니다.컴파일러는 이것을 "또 다른 하나가 오고 있다"는 예측의 단일 문자 토큰으로 간주합니다.최신 컴파일러가 LR(1)을 사용하는지 모르겠지만, 쉼표 뒤에 아무것도 없는 경우 구문 오류가 발생하는 것은 LR(1)이라고 생각합니다.다른 개발자에게 동의를 받은 적은 드물지만, JohnBrooking이 동의한 것 같아요!
언급URL : https://stackoverflow.com/questions/2829581/why-do-php-array-examples-leave-a-trailing-comma
'programing' 카테고리의 다른 글
JNI에서 C 구조를 Java 코드로 주고받는 방법은 무엇입니까? (0) | 2023.01.17 |
---|---|
하위 목록에 예기치 않게 반영된 목록 변경 사항 목록 (0) | 2023.01.17 |
Composer 실행 시 xdebug 사용 안 함 (0) | 2023.01.17 |
폼 제출과 같은 JavaScript 투고 요청 (0) | 2023.01.17 |
Vuex 스토어/내비게이션 가드가 처음 작동하지 않음 (0) | 2023.01.17 |