찾다
백엔드 개발PHP 튜토리얼PHP PSR-2 코딩 스타일 사양

코드 스타일 사양

본 사양은 [PSR-1][] 기본 코드 사양을 상속 및 확장한 것입니다.

이 사양에서는 PHP 코드를 표준화하기 위한 일련의 규칙을 공식화하여 다양한 작성자의 코드를 탐색할 때 다양한 코딩 스타일로 인해 발생하는 불편함을 줄이기를 희망합니다.

여러 프로그래머가 여러 프로젝트에서 협업하는 경우 공통 코딩 표준이 필요하며
이 글의 스타일 사양은 여러 다른 프로젝트의 코딩 스타일의 공통 특성에서 파생됩니다.
따라서 가치는 이 사양의 핵심은 그 자체가 아니라 우리 모두가 따르는 코딩 스타일에 있습니다.

키워드 "해야 한다"("MUST"), "해서는 안 된다/해서는 안 된다"("MUST NOT"), "필요하다"("필수"),
"할 것이다"("SHALL"), "SHALL NOT"), "SHOULD"), "SHOULD NOT",
"RECOMMENDED", "MAY" ) 및 "OPTIONAL")은 [RFC 2119][]에 자세히 설명되어 있습니다.

개요


코드 [PSR-1][]의 코딩 규칙을 따라야 합니다.

코드 탭 키 대신 공백 4개를 사용해 들여쓰기해야 합니다.

각 줄의 문자 수 80자 이내로 유지해야 합니다. 이론적으로 는 120자를 초과할 수 없지만 하드 제한되어서는 안 됩니다.

각 네임스페이스 선언 및 사용 선언 블록 뒤에

반드시빈 줄을 삽입해야 합니다.

클래스의 여는 중괄호({)

는 함수 선언 뒤의 한 줄에 작성해야 하며, 닫는 중괄호(})도 한 줄에 작성해야 합니다. 함수 본문 뒤에 자체 줄이 있습니다.

메서드의 여는 중괄호({)

는 함수 선언 뒤의 한 줄에 작성해야 하며, 닫는 중괄호(})도 작성해야 합니다. 함수 본문 뒤에 자체 줄이 있습니다.

클래스 특성 및 메서드

액세스 수정자(개인, 보호 및 공개)를 추가해야 하며 추상 및 최종 은 액세스 수정자 앞에 선언해야 하고 정적 액세스 한정자 뒤에 선언됩니다.

제어 구조의 키워드 다음

에는 공백 문자가 있어야 하지만, 메서드나 함수를 호출할 때 에는 공백 문자가 없어야 합니다.

제어 구조의 여는 중괄호({)

는 선언과 같은 줄에 작성해야 하고, 닫는 중괄호(})는 본문 뒤의 자체 줄에 작성해야 합니다. 제어 구조의 여는 왼쪽 괄호 뒤와 닫는 오른쪽 괄호 앞에는 공백이 없어야 합니다.

1.1. 예

다음 예제 프로그램은 위 사양의 대부분을 간단하게 보여줍니다.

namespace VendorPackage;
    use FooInterface;
  1. BarClass를 Bar로 사용;
  2. OtherVendorOtherPackageBazClass 사용;
  3. class Foo는 Bar를 확장하여 FooInterface를 구현합니다
  4. {
  5. 공개 함수 SampleFunction($a, $b = null)
  6. {
  7. if ($a === $b) {
  8. bar();
  9. } elseif ($a > $b) {
  10. $foo->bar($arg1);
  11. } else {
  12. BazClass::bar($arg2, $arg3);
  13. }
  14. }
  15. final public static function bar()
  16. {
  17. // 메소드 본문
  18. }
  19. }
  20. 코드 복사

일반 규정


2.1 기본 코딩 지침

코드 [PSR-1][]의 모든 사양을 준수해야 합니다.

2.2 문서

모든 PHP 파일은 줄 종결자로 Unix LF(라인피드)를 사용해야 합니다.

모든 PHP 파일은 빈 줄로 끝나야 합니다.

순수 PHP 코드 파일 마지막 ?> 닫는 태그를 생략해야 합니다.

2.3. 확인

행 길이 에는 엄격한 제약이 있어서는 안 됩니다.

소프트 길이 제한 120자로 제한되어야 합니다. 이 길이를 초과하는 경우 코드 사양 확인을 포함하는 편집기 는 경고를 표시해야 하지만 해서는 안 됩니다 오류 메시지를 발행합니다.

각 줄 80자를 초과할 수 없습니다. 80자를 초과하는 줄은 여러 줄로 접어야 합니다.

공백이 아닌 줄

뒤에는 추가 공백이 없어야 합니다.

빈 줄

을 사용하면 코드를 더 쉽게 읽을 수 있고 코드를 덩어리지게 만드는 데 도움이 됩니다.

각 행

에는 두 개 이상의 구문이 포함될 수 없습니다. 2.4. 들여쓰기

코드

는 4개의 공백으로 들여쓰기되어야 하며, 탭 키를 사용해서는 안 됩니다 .

참고: 들여쓰기에 탭 키 대신 공백을 사용하면

코드 차이 비교, 패치 적용, 코드 다시 읽기, 주석 작성 시 혼란을 피할 수 있다는 장점이 있습니다.
또한 들여쓰기에 공백을 사용하면 정렬이 더 쉬워집니다.
2.5. 키워드 및 True/False/Null

PHP 모든 [키워드][]

모두 소문자여야 합니다.

true, false 및 null 상수도

모두 소문자여야 합니다.

네임스페이스 및 사용 선언


네임스페이스 선언 뒤에는 빈 줄을 삽입해야 합니다.

모든 용도는 네임스페이스 뒤에 선언해야 합니다.

각 use 문에는 하나의 use 키워드만 있어야 합니다.

use 문 블록이 선언된 후에는 빈 줄이 있어야 합니다.

예:

    네임스페이스 VendorPackage;
  1. FooClass 사용;
  2. BarClass를 Bar로 사용;
  3. OtherVendorOtherPackageBazClass 사용;
  4. // ... 추가 PHP 코드 ...
코드 복사
클래스, 속성 및 메서드


여기서 "클래스"는 재사용 가능한 모든 클래스, 인터페이스 및 특성 코드 블록을 의미합니다.

4.1. 확장과 상속

확장 및 구현 키워드

는 클래스 이름과 같은 줄에 작성해야 합니다.

클래스의 여는 중괄호

한 줄을 차지해야 하고, 닫는 중괄호 는 클래스 본문 다음의 한 줄을 차지해야 합니다.

네임스페이스 VendorPackage;
  • FooClass 사용;
  • BarClass를 Bar로 사용;
  • OtherVendorOtherPackageBazClass 사용;
  • class ClassName extends ParentClass Implements ArrayAccess, Countable
  • {
  • // 상수, 속성, 메서드
  • }
  • 코드 복사
  • 구현의 상속 목록은
    여러 줄로 나눌 수도 있습니다

    이 경우 상속된 각 인터페이스 이름 은 첫 번째 줄을 포함하여 별도의 줄로 구분되어야 합니다.

    네임스페이스 VendorPackage;
  • FooClass 사용;
  • BarClass를 Bar로 사용;
  • OtherVendorOtherPackageBazClass 사용;
  • class ClassName extends ParentClass Implements
  • ArrayAccess,
  • Countable,
  • Serialized
  • {
  • // 상수, 속성, 메서드
  • }
  • 코드 복사
  • 4.2. 각 속성에는
    반드시

    액세스 수정자가 추가되어 있어야 합니다.

    속성을 선언하기 위해 var 키워드를 사용하면 안 됩니다

    . 각 문은

    두 개 이상의 속성을 정의하면 안 됩니다

    .

    속성이 보호되는지 또는 비공개인지 구분하기 위해 밑줄을 접두사로 사용하지 마세요

    . 다음은 속성 선언의 예입니다.

    namespace VendorPackage;
  • class ClassName
  • {
  • public $foo = null;
  • }
  • 코드 복사
  • 4.3. 모든 메소드는

    액세스 수정자를 추가해야 합니다.

    메소드가 보호되는지 또는 비공개인지 구분하기 위해 밑줄을 접두사로 사용하지 마세요

    . 메서드 이름 뒤에

    에는 공백 문자가 있어서는 안 됩니다.

    여는 중괄호 는 한 줄에 단독으로 있어야 하며, 닫는 중괄호 이어야 합니다. 🎜> 메소드 본문 뒤에 별도의 줄에 . 매개변수의 왼쪽 괄호 뒤와 오른쪽 괄호 앞에는 공백 이 없어야 합니다. 표준 메소드 선언의 경우 괄호, 쉼표, 공백 및 중괄호 배치에 주의하세요.

    네임스페이스 VendorPackage;
    1. class ClassName
    2. {
    3. 공개 함수 fooBarBaz($arg1, &$arg2 , $arg3 = [])
    4. {
    5. // 메소드 본문
    6. }
    7. }
    8. 코드 복사
    4.4.

    매개변수 목록에서 각 쉼표 뒤에는 공백 이 있어야 하며, 쉼표 앞에는 공백이 있어서는 안 됩니다.

    기본값이 있는 매개변수인 는 매개변수 목록의 마지막에 배치되어야 합니다.

    1. 네임스페이스 VendorPackage;
    2. class ClassName
    3. {
    4. 공용 함수 foo($arg1, &$arg2 , $arg3 = [])
    5. {
    6. // 메소드 본문
    7. }
    8. }
    코드 복사

    매개변수 목록 여러 줄로 나눌 수 있으므로 첫 번째 매개변수를 포함한 각 매개변수 별도의 줄에 있어야 합니다.

    매개변수 목록을 여러 줄로 나눈 후 메서드의 닫는 괄호와 여는 중괄호를 같은 줄에 공백으로 구분하여 작성해야 합니다.

    1. 네임스페이스 VendorPackage;
    2. class ClassName
    3. {
    4. 공개 함수 aVeryLongMethodName(
    5. ClassTypeHint $arg1 ,
    6. &$arg2,
    7. array $arg3 = []
    8. ) {
    9. // 메서드 본문
    10. }
    11. }
    코드 복사
    4.5 추상적이고 최종적이며 정적입니다.

    추상 또는 최종 선언을 추가해야 하는 경우에는 접근 한정자 앞에 써야 하고, static의 경우 뒤에 써야 합니다.

    1. 네임스페이스 VendorPackage;
    2. 추상 클래스 ClassName
    3. {
    4. protected static $foo;
    5. 추상 보호 함수 zim();
    6. final public static function bar()
    7. {
    8. // 메소드 본문
    9. }
    10. }
    코드 복사
    4.6.

    메서드 및 함수 호출 시, 메소드 이름 또는 함수 이름과 매개변수 의 왼쪽 괄호 사이에 공백이 없어야 하며, 오른쪽 괄호 앞에는 공백이 없어야 합니다. 매개변수 . 각 매개변수 앞에는 공백이 없어야 하지만, 뒤에는 공백이 있어야 합니다.

      bar();
    1. $foo->bar($arg1);
    2. Foo::bar($arg2 , $arg3);
    코드 복사
    매개변수

    여러 줄로 나눌 수 있으며, 이 때 첫 번째 매개변수를 포함한 각 매개변수 각 매개변수 은 한 줄에 이어야 합니다.

      $foo->bar(
    1. $longArgument,
    2. $longerArgument,
    3. $muchLongerArgument
    4. ) ;
    코드 복사
    제어 구조


    제어구조의 기본 사양은 다음과 같습니다.

    제어 구조 키워드

    뒤에는 공백이 있어야 합니다.

    왼쪽 괄호 뒤에는 공백이 없어야 합니다(

    .

    오른쪽 대괄호 앞에는

    공백이 없어야 합니다. 오른쪽 괄호 )와 여는 중괄호 { 사이에 공백

    이 있어야 합니다.

    구조체 의 본문은

    한 번 들여쓰기되어야 합니다.

    중괄호 종료 } 구조체 본문 뒤에 별도의 줄에 있어야 합니다.

    각 구조의 본문 은 중괄호 쌍으로 묶어야 합니다. 이렇게 하면 구조가 더욱 구조화되고 새 줄을 추가할 때 오류가 발생할 가능성이 줄어듭니다.

    5.1. if , elseif 및 else

    표준 if 구조는 다음 코드와 같습니다. 대괄호, 공백 및 중괄호의 위치에 주의하세요. else와 elseif는 이전 닫는 중괄호와 같은 줄에 있습니다.


    if ($expr1) {

    // if body
    } elseif ($expr2) {
      // elseif body
    1. } else {
    2. // else body;
    3. }
    4. 코드 복사
    키워드 elseif를 사용해야 합니다. 모든 제어 키워드가 단일 단어로 표시되도록 하려면 else를 모두 대체합니다. 5.2.스위치와 케이스
    표준 스위치 구조는 다음 코드와 같습니다. 괄호, 공백, 중괄호의 위치에 주의하세요.

    case 문 스위치를 기준으로 들여쓰기되어야 하며, break 문과 Case 내의 다른 문은 사례를 기준으로 들여쓰기되어야 합니다.

    문을 통해 비어 있지 않은 케이스가 있는 경우 // no break in the body와 유사한 주석이 있어야 합니다.



    스위치($expr) {

    케이스 0:
    echo '첫 번째 케이스, 중단 있음';
      break;
    1. 사례 1:
    2. echo '떨어지는 두 번째 사례';
    3. // 중단 없음
    4. 사례 2:
    5. 사례 3:
    6. 사례 4:
    7. echo '세 번째 경우, break 대신 return';
    8. return;
    9. default:
    10. echo 'Default case';
    11. break;
    12. }
    13. 코드 복사
    14. 5.3. 동안과 하는 동안

      표준 while 문은 다음과 같아야 합니다. 대괄호, 공백 및 중괄호의 위치에 주의하세요.

      1. while ($expr) {
      2. // 구조체 본문
      3. }
      코드 복사

      표준 do while문은 다음과 같습니다. 이번에도 대괄호, 공백, 중괄호의 위치에 주의하세요.

      1. do {
      2. // 구조체 본문;
      3. } while ($expr);
      코드 복사
      5.4.

      문의 기준은 다음과 같으니 괄호, 공백, 중괄호의 위치에 주의하세요.

      1. for ($i = 0; $i // 본문
      2. }
      코드 복사
      5.5.

      표준 foreach 문은 다음과 같습니다. 대괄호, 공백, 중괄호의 위치에 주의하세요.

      1. foreach ($iterable as $key => $value) {
      2. // foreach 본문
      3. }
      코드 복사
      5.6.

      표준 try catch 문은 다음과 같습니다. 대괄호, 공백 및 중괄호의 위치에 주의하세요.

      1. try {
      2. // try body
      3. } catch (FirstExceptionType $e) {
      4. // catch body
      5. } catch (OtherExceptionType $e) {
      6. // 본문 잡기
      7. }
      코드 복사

      클로저


      클로저 선언 시 키워드 함수 뒤, 키워드 사용 전후에 공백이 있어야 합니다.

      여는 중괄호

      는 선언문과 같은 줄에 , 닫는 중괄호 는 본문이 끝나는 줄 바로 뒤에 와야 합니다.

      매개변수 목록과 변수 목록에서는 왼쪽 괄호 뒤, 오른쪽 괄호 앞에

      공백이 없어야 합니다. 매개변수 및 변수 목록에서

      에는 쉼표 앞에 공백이

      있으면 안 되고, 에는 쉼표 뒤에 공백이 있어야 합니다. 클로저에 기본값이 있는 매개변수

      는 목록 끝에

      배치되어야 합니다. 표준 클로저 선언문은 다음과 같으니 괄호, 쉼표, 공백, 중괄호의 위치에 주의하세요.

      $closureWithArgs = function ($arg1, $arg2) {
    15. // 본문
    16. };
    17. $closureWithArgsAndVars = function ($arg1, $arg2) use ($var1, $var2) {
    18. // body
    19. };
    20. 코드 복사
    매개변수 목록과 변수 목록

    여러 줄로 나눌 수 있으므로 첫 번째 항목을 포함한 각 매개변수나 변수는 별도의 줄에 있어야 하고, 닫는 괄호는 목록은 닫는 괄호와 동일합니다. 패키지의 여는 중괄호 는 같은 줄에 배치되어야 합니다.

    다음 예에는 매개변수 및 변수 목록이 여러 줄로 구분되는 여러 사례가 포함되어 있습니다.

      $longArgs_noVars = 함수(
    1. $longArgument,
    2. $longerArgument,
    3. $muchLongerArgument
    4. ) {
    5. // 본문
    6. };
    7. $noArgs_longVars = function () 사용 (
    8. $longVar1,
    9. $longerVar2,
    10. $muchLongerVar3
    11. ) {
    12. / / body
    13. };
    14. $longArgs_longVars = 함수(
    15. $longArgument,
    16. $longerArgument,
    17. $muchLongerArgument
    18. ) 사용(
    19. $longVar1,
    20. $longerVar2,
    21. $muchLongerVar3
    22. ) {
    23. // 본문
    24. };
    25. $longArgs_shortVars = 함수(
    26. $longArgument,
    27. $longerArgument,
    28. $muchLongerArgument
    29. ) 사용($var1) {
    30. // 본문
    31. };
    32. $shortArgs_longVars = 함수($arg) 사용(
    33. $longVar1,
    34. $longerVar2 ,
    35. $muchLongerVar3
    36. ) {
    37. // body
    38. };
    코드 복사
    클로저가 직접 사용된다는 점에 유의하세요. 위의 규칙은 함수나 메서드에 대한 인수를 호출할 때 여전히 적용됩니다.

      $foo->bar(
    1. $arg1,
    2. 함수($arg2) 사용($var1) {
    3. // 본문
    4. },
    5. $arg3
    6. );
    코드 복사

    요약


    위 사양에는 다음을 포함하되 이에 국한되지 않는 일부 감독이 불가피하게 있습니다.

    전역 변수 및 상수 정의

    기능의 정의

    연산자와 임무

    인라인 정렬

    주석 및 문서 블록

    클래스명의 접두사와 접미사

    모범 사례

    이 사양의 후속 개정 및 확장은 위의 단점을 보완할 것입니다.

    부록 A. 설문지

    이 사양을 작성하기 위해 팀에서는 각 구성원 프로젝트의 공통 사양에 대한 통계를 수집하기 위한 설문지를 개발했습니다.
    다음은 이번 설문 조사의 데이터이며 여기에서 검토할 수 있습니다.

    A.1. 설문지 데이터
    1. url,http://www.horde.org/apps/horde/docs/CODING_STANDARDS,http://pear.php.net/manual/ en/standards.php,http://solarphp.com/manual/appendix-standards.style,http://framework.zend.com/manual/en/coding-standard.html,http://symfony.com/ doc/2.0/contributing/code/standards.html,http://www.ppi.io/docs/coding-standards.html,https://github.com/ezsystems/ezp-next/wiki/codingstandards,http: //book.cakephp.org/2.0/en/contributing/cakephp-coding-conventions.html,https://github.com/UnionOfRAD/lithium/wiki/Spec:-Coding,http://drupal.org/coding -표준,http://code.google.com/p/sabredav/,http://area51.phpbb.com/docs/31x/coding-guidelines.html,https://docs.google.com/a/ zikula.org/document/edit?authkey=CPCU0Us&hgd=1&id=1fcqb93Sn-hR9c0mkN6m_tyWnmEvoswKBtSc0tKkZmJA,http://www.chisimba.com,n/a,https://github.com/Respect/project-info/blob/master/ coding-standards-sample.php,n/a,PHP용 개체 체조,http://doc.nette.org/en/coding-standard,http://flow3.typo3.org,https://github.com /propelorm/Propel2/wiki/Coding-Standards,http://developer.joomla.org/coding-standards.html
    2. 투표,예,예,예,예,예,예,예,예,예,예 ,예,예,예,예,예,아니요,아니요,아니요,?,예,아니요,예
    3. indent_type,4,4,4,4,4,tab,4,tab,tab,2,4 ,탭,4,4,4,4,4,4,탭,탭,4,탭
    4. line_length_limit_soft,75,75,75,75,no,85,120,120,80,80,80,no,100,80 ,80,?,?,120,80,120,no,150
    5. line_length_limit_hard,85,85,85,85,no,no,no,no,100,?,no,no,no,100,100,?,120,120 ,no,no,no,no
    6. class_names,studly,studly,studly,studly,studly,studly,studly,studly,studly,studly,studly,lower_under,studly,lower,studly,studly,studly,studly,? ,스터들리,스터들리,스터들리
    7. class_brace_line,다음,다음,다음,다음,다음,동일,다음,동일,동일,동일,다음,다음,다음,다음,다음,다음,다음,다음,동일 ,다음,다음
    8. 상수_이름,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper ,upper
    9. true_false_null,lower,lower,lower,lower,lower,lower,lower,lower,lower,upper,lower,lower,lower,upper,lower,lower,lower,lower,lower,upper,lower,lower
    10. 방법_이름,낙타, 낙타, 낙타, 낙타, 낙타, 낙타, 낙타, 낙타, 낙타, 낙타, 낙타, lower_under, 낙타, 낙타, 낙타, 낙타, 낙타, 낙타, 낙타, 낙타, 낙타, 낙타
    11. method_brace_line,다음,다음,다음,다음,다음,동일,다음,동일,동일,동일,동일,다음,다음,동일,다음,다음,다음,다음,다음,동일,다음,다음
    12. control_brace_line ,같은,같은,같은,같은,같은,같은,다음,같은,같은,같은,같은,다음,같은,같은,다음,같은,같은,같은,같은,같은,같은,다음
    13. control_space_after,yes ,예,예,예,예,아니요,예,예,예,예,아니요,예,예,예,예,예,예,예,예,예,예
    14. always_use_control_braces,예,예 ,예,예,예,예,아니요,예,예,예,아니요,예,예,예,예,아니요,예,예,예,예,예,예
    15. else_elseif_line,동일,동일,동일 ,동일,동일,동일,다음,동일,동일,다음,동일,다음,동일,다음,다음,동일,동일,동일,동일,동일,동일,다음
    16. case_break_indent_from_switch,0/1,0/1 ,0/1,1/2,1/2,1/2,1/2,1/1,1/1,1/2,1/2,1/1,1/2,1/2,1 /2,1/2,1/2,1/2,0/1,1/1,1/2,1/2
    17. function_space_after,no,no,no,no,no,no,no,no ,no,no,no,no,no,no,no,no,no,no,no,no,no,no
    18. closing_php_tag_required,no,no,no,no,no,no,no,no,yes ,아니요,아니요,아니요,아니요,예,아니요,아니요,아니요,아니요,아니요,예,아니요,아니요
    19. line_endings,LF,LF,LF,LF,LF,LF,LF,LF,?,LF ,?,LF,LF,LF,LF,?,,LF,?,LF,LF,LF
    20. static_or_visibility_first,static,?,static,either,either,either,visibility,visibility,visibility,either,static, 어느 쪽,?,가시성,?,?,둘 중,둘 중,가시성,가시성,정적,?
    21. control_space_parens,no,no,no,no,no,no,yes,no,no,no,no,no, no,yes,?,no,no,no,no,no,no,no
    22. blank_line_after_php,no,no,no,no,yes,no,no,no,no,yes,yes,no,no, 예,?,예,예,아니요,예,아니요,예,아니요
    23. class_method_control_brace,다음/다음/동일,다음/다음/동일,다음/다음/동일,다음/다음/동일,다음/다음/ 동일, 동일/동일/동일, 다음/다음/다음, 동일/동일/동일, 동일/동일/동일, 동일/동일/동일, 동일/동일/동일,다음/다음/다음,다음/다음/동일, 다음/동일/동일,다음/다음/다음,다음/다음/동일,다음/다음/동일,다음/다음/동일,다음/다음/동일,다음/다음/동일,동일/동일/동일,다음/다음/동일,다음/ 다음/다음
    코드 복사
    A.2. 설문지 지침

    indent_type:
    들여쓰기 유형. tab = "탭 키를 한 번 사용", 2 또는 4 = "공백 수"

    line_length_limit_soft:
    한 줄당 문자 수에 대한 "소프트" 제한 ? = 답변 없음 또는 답변 없음, 아니요는 제한이 없음을 의미합니다.

    line_length_limit_hard:
    한 줄당 문자 수에 대한 "하드" 제한 ? = 답변 없음 또는 답변 없음은 제한이 없음을 의미합니다.

    class_names:
    클래스 이름. lower = 소문자만 허용, lower_under = 밑줄로 구분된 소문자, StudlyCase 카멜 케이스 스타일.

    class_brace_line:
    클래스의 여는 중괄호가 class 키워드와 같은 줄에 있나요, 아니면 다음 줄에 있나요?

    constant_names:
    클래스의 상수 이름을 지정하는 방법은 무엇입니까? 대문자 = 밑줄로 구분된 대문자.

    true_false_null:
    키워드 true, false 및 null은 모두 소문자인가요 아니면 모두 대문자인가요?

    method_names:
    메서드 이름을 어떻게 지정하나요? camel = camelCase, lower_under = 밑줄로 구분된 소문자.

    method_brace_line:
    메서드의 여는 중괄호가 메소드 이름과 같은 줄에 있습니까, 아니면 다음 줄에 있습니까?

    control_brace_line:
    제어 구조의 여는 중괄호가 선언과 같은 줄에 있습니까, 아니면 다음 줄에 있습니까?

    control_space_after:
    제어 구조 키워드 뒤에 공백이 있나요?

    always_use_control_braces:
    제어 구조는 항상 중괄호로 묶여 있나요?

    else_elseif_line:
    else 또는 elseif가 이전 닫는 중괄호와 같은 줄에 있습니까, 아니면 다음 줄에 있습니까?

    case_break_indent_from_switch:
    switch 문에서 case와 break를 스위치에 비해 들여쓰기해야 하는 횟수는 몇 번입니까?

    function_space_after:
    함수 호출문에서 함수 이름과 변수 목록의 왼쪽 괄호 사이에 공백이 있나요?

    closing_php_tag_required:
    순수 PHP 코드가 포함된 파일의 경우 ?> 닫는 태그가 필요합니까?

    line_endings:
    어떤 유형의 줄 끝을 선택해야 하나요?

    static_or_visibility_first:
    정적 메서드를 선언할 때 static을 액세스 한정자 앞이나 뒤에 작성해야 합니까?

    control_space_parens:
    제어 구조에서 왼쪽 괄호 뒤와 오른쪽 괄호 앞에 공백이 있나요? 예 = if( $expr ), no = if($expr).

    blank_line_after_php:
    PHP 시작 태그 뒤에 빈 줄이 필요합니까?

    class_method_control_brace:
    클래스, 메소드 및 제어 구조에서 중괄호 통계를 시작합니다.

    A.3. 설문지 통계 결과
    1. indent_type:
    2. 탭: 7
    3. 2: 1
    4. 4: 14
    5. line_length_limit_soft:
    6. ?: 2
    7. 아니요: 3
    8. 75:4
    9. 80:6
    10. 85:1
    11. 100:1
    12. 120:4
    13. 150:1
    14. line_length_limit_hard:
    15. ?: 2
    16. no: 11
    17. 85: 4
    18. 100: 3
    19. 120: 2
    20. class_names:
    21. ?: 1
    22. lower: 1
    23. lower_under: 1
    24. Studly: 19
    25. class_brace_line:
    26. next: 16
    27. same: 6
    28. constant_names:
    29. upper: 22
    30. true_false_null:
    31. lower: 19
    32. upper: 3
    33. method_names:
    34. camel: 21
    35. lower_under: 1
    36. method_brace_line:
    37. next: 15
    38. same: 7
    39. control_brace_line:
    40. next: 4
    41. same : 18
    42. control_space_after:
    43. 아니요: 2
    44. 예: 20
    45. always_use_control_braces:
    46. 아니요: 3
    47. 예: 19
    48. else_elseif_line:
    49. 다음: 6
    50. 동일: 16
    51. case_break_indent_from_switch:
    52. 0/1: 4
    53. 1/1: 4
    54. 1/2: 14
    55. function_space_after:
    56. 아니오: 22
    57. closing_php_tag_required:
    58. 아니오: 19
    59. 예: 3
    60. line_endings:
    61. ?: 5
    62. LF: 17
    63. static_or_visibility_first:
    64. ?: 5
    65. 둘 중 하나: 7
    66. 정적: 4
    67. 가시성: 6
    68. control_space_parens:
    69. ?: 1
    70. 아니요: 19
    71. 예: 2
    72. blank_line_after_php:
    73. ?: 1
    74. 아니요: 13
    75. 예 : 8
    76. class_method_control_brace:
    77. 다음/다음/다음: 4
    78. 다음/다음/동일: 11
    79. 다음/동일/동일: 1
    80. 동일/동일/동일: 6
    코드 복사

    Github(PizzaLiu)에서 재인쇄

    PHP, PSR


    성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    PHP 응용 프로그램을 더 빨리 만드는 방법PHP 응용 프로그램을 더 빨리 만드는 방법May 12, 2025 am 12:12 AM

    TomakePhPapplicationSfaster, followthesesteps : 1) useopCodeCaching likeOpcachetOrpectipiledScriptBecode.2) MinimizedAtabaseQueriesByUsingQueryCachingandEfficientIndexing.3) leveragephp7 assistorBetterCodeeficiession.4) 구현 전략적 지시

    PHP 성능 최적화 점검표 : 지금 속도를 향상시킵니다PHP 성능 최적화 점검표 : 지금 속도를 향상시킵니다May 12, 2025 am 12:07 AM

    toImprovePhPapplicationSpeed, followthesesteps : 1) enableOpCodeCachingWithApcuTeCeScripteXecutionTime.2) 구현 구현

    PHP 의존성 주입 : 코드 테스트 가능성을 향상시킵니다PHP 의존성 주입 : 코드 테스트 가능성을 향상시킵니다May 12, 2025 am 12:03 AM

    의존성 주입 (DI)은 명시 적으로 전이적 종속성에 의해 PHP 코드의 테스트 가능성을 크게 향상시킵니다. 1) DI 디퍼 커플 링 클래스 및 특정 구현은 테스트 및 유지 보수를보다 유연하게 만듭니다. 2) 세 가지 유형 중에서, 생성자는 상태를 일관성있게 유지하기 위해 명시 적 표현 의존성을 주입합니다. 3) DI 컨테이너를 사용하여 복잡한 종속성을 관리하여 코드 품질 및 개발 효율성을 향상시킵니다.

    PHP 성능 최적화 : 데이터베이스 쿼리 최적화PHP 성능 최적화 : 데이터베이스 쿼리 최적화May 12, 2025 am 12:02 AM

    DatabaseQuesyOptimizationInphPinVolvesVesstoigiestoInsperferferferferformance.1) SelectOnlyNecessaryColumnstoredAtatatransfer.2) useinDexingTeSpeedUpdatarretieval.3) ubstractOrerEresultSoffRequeries.4) UtilizePreDstatements Offeffi

    간단한 가이드 : PHP 스크립트와 함께 이메일 보내기간단한 가이드 : PHP 스크립트와 함께 이메일 보내기May 12, 2025 am 12:02 AM

    phpisusedforendingemailsduetoitsbuitsbuitsbuit-inmail () functionandsupportivelibraries lifephpmailerandswiftmailer.1) usethemail () functionforbasicemails, butithaslimitations.2) EmployPhpmailerforAdvancedFeatirehtMailsAndAtachments.3))

    PHP 성능 : 병목 현상 식별 및 수정PHP 성능 : 병목 현상 식별 및 수정May 11, 2025 am 12:13 AM

    PHP 성능 병목 현상은 다음 단계를 통해 해결할 수 있습니다. 1) 성능 분석을 위해 Xdebug 또는 Blackfire를 사용하여 문제를 찾으십시오. 2) 데이터베이스 쿼리 최적화 및 APCU와 같은 캐시 사용; 3) Array_Filter와 같은 효율적인 기능을 사용하여 배열 작업을 최적화합니다. 4) 바이트 코드 캐시에 대한 OpCache 구성; 5) HTTP 요청을 줄이고 사진 최적화와 같은 프론트 엔드 최적화; 6) 지속적으로 모니터링하고 성능을 최적화합니다. 이러한 방법을 통해 PHP 응용 프로그램의 성능을 크게 향상시킬 수 있습니다.

    PHP의 종속성 주입 : 빠른 요약PHP의 종속성 주입 : 빠른 요약May 11, 2025 am 12:09 AM

    종속성 주사 (di) inphpisadesignpattern thatmanages 및 enpleducesclassdelencies, 향상 codemodularity, trestability 및 maintainability .itallowspassingDepporsingDikedAbaseConnectionStoclassesAssparameters, 촉진 이용성.

    PHP 성능 향상 : 캐싱 전략 및 기술PHP 성능 향상 : 캐싱 전략 및 기술May 11, 2025 am 12:08 AM

    cachingimprovesphpperferferfermanceStoringResultsOfcomputationSorqueriesforquickRetrieval, retingServerloadandenhancancing responsetimestimes : 1) opcodecaching, opcodecaching, whitescompiledphps scriptsinmorytoskipcompileation; 2) dataCachingUsingmemmc

    See all articles

    핫 AI 도구

    Undresser.AI Undress

    Undresser.AI Undress

    사실적인 누드 사진을 만들기 위한 AI 기반 앱

    AI Clothes Remover

    AI Clothes Remover

    사진에서 옷을 제거하는 온라인 AI 도구입니다.

    Undress AI Tool

    Undress AI Tool

    무료로 이미지를 벗다

    Clothoff.io

    Clothoff.io

    AI 옷 제거제

    Video Face Swap

    Video Face Swap

    완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

    뜨거운 도구

    메모장++7.3.1

    메모장++7.3.1

    사용하기 쉬운 무료 코드 편집기

    SublimeText3 중국어 버전

    SublimeText3 중국어 버전

    중국어 버전, 사용하기 매우 쉽습니다.

    스튜디오 13.0.1 보내기

    스튜디오 13.0.1 보내기

    강력한 PHP 통합 개발 환경

    SublimeText3 Linux 새 버전

    SublimeText3 Linux 새 버전

    SublimeText3 Linux 최신 버전

    WebStorm Mac 버전

    WebStorm Mac 버전

    유용한 JavaScript 개발 도구