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

PHP PSR-2 코딩 스타일 사양

Jul 23, 2016 am 08:54 AM

코드 스타일 사양

본 사양은 [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. 코드 복사
  21. 일반 규정


    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;
  22. FooClass 사용;
  23. BarClass를 Bar로 사용;
  24. OtherVendorOtherPackageBazClass 사용;
  25. class ClassName extends ParentClass Implements ArrayAccess, Countable
  26. {
  27. // 상수, 속성, 메서드
  28. }
코드 복사
구현의 상속 목록은 여러 줄로 나눌 수도 있습니다

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

네임스페이스 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 < 10; $i ) {
      2. // 본문
      3. }
      코드 복사
      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) {
      4. // 본문
      5. };
      6. $closureWithArgsAndVars = function ($arg1, $arg2) use ($var1, $var2) {
      7. // body
      8. };
      코드 복사
      매개변수 목록과 변수 목록

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

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

        $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으로 문의하세요.

    핫 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 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

    인기 기사

    <gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
    3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
    Nordhold : Fusion System, 설명
    3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
    Mandragora : 마녀 트리의 속삭임 - Grappling Hook 잠금 해제 방법
    3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

    뜨거운 도구

    메모장++7.3.1

    메모장++7.3.1

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

    SublimeText3 중국어 버전

    SublimeText3 중국어 버전

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

    스튜디오 13.0.1 보내기

    스튜디오 13.0.1 보내기

    강력한 PHP 통합 개발 환경

    드림위버 CS6

    드림위버 CS6

    시각적 웹 개발 도구

    SublimeText3 Mac 버전

    SublimeText3 Mac 버전

    신 수준의 코드 편집 소프트웨어(SublimeText3)

    PHP 및 Python : 두 가지 인기있는 프로그래밍 언어를 비교합니다 PHP 및 Python : 두 가지 인기있는 프로그래밍 언어를 비교합니다 Apr 14, 2025 am 12:13 AM

    PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

    PHP에서 보안 비밀번호 해싱을 설명하십시오 (예 : Password_hash, Password_Verify). 왜 MD5 또는 SHA1을 사용하지 않습니까? PHP에서 보안 비밀번호 해싱을 설명하십시오 (예 : Password_hash, Password_Verify). 왜 MD5 또는 SHA1을 사용하지 않습니까? Apr 17, 2025 am 12:06 AM

    PHP에서 Password_hash 및 Password_Verify 기능을 사용하여 보안 비밀번호 해싱을 구현해야하며 MD5 또는 SHA1을 사용해서는 안됩니다. 1) Password_hash는 보안을 향상시키기 위해 소금 값이 포함 된 해시를 생성합니다. 2) Password_verify 암호를 확인하고 해시 값을 비교하여 보안을 보장합니다. 3) MD5 및 SHA1은 취약하고 소금 값이 부족하며 현대 암호 보안에는 적합하지 않습니다.

    PHP 실행 : 실제 예제 및 응용 프로그램 PHP 실행 : 실제 예제 및 응용 프로그램 Apr 14, 2025 am 12:19 AM

    PHP는 전자 상거래, 컨텐츠 관리 시스템 및 API 개발에 널리 사용됩니다. 1) 전자 상거래 : 쇼핑 카트 기능 및 지불 처리에 사용됩니다. 2) 컨텐츠 관리 시스템 : 동적 컨텐츠 생성 및 사용자 관리에 사용됩니다. 3) API 개발 : 편안한 API 개발 및 API 보안에 사용됩니다. 성능 최적화 및 모범 사례를 통해 PHP 애플리케이션의 효율성과 유지 보수 성이 향상됩니다.

    PHP : 웹 개발의 핵심 언어 PHP : 웹 개발의 핵심 언어 Apr 13, 2025 am 12:08 AM

    PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 ​​있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7

    PHP의 지속적인 관련성 : 여전히 살아 있습니까? PHP의 지속적인 관련성 : 여전히 살아 있습니까? Apr 14, 2025 am 12:12 AM

    PHP는 여전히 역동적이며 현대 프로그래밍 분야에서 여전히 중요한 위치를 차지하고 있습니다. 1) PHP의 단순성과 강력한 커뮤니티 지원으로 인해 웹 개발에 널리 사용됩니다. 2) 유연성과 안정성은 웹 양식, 데이터베이스 작업 및 파일 처리를 처리하는 데 탁월합니다. 3) PHP는 지속적으로 발전하고 최적화하며 초보자 및 숙련 된 개발자에게 적합합니다.

    스칼라 유형, 반환 유형, 노조 유형 및 무효 유형을 포함한 PHP 유형의 힌트 작업은 어떻게 작동합니까? 스칼라 유형, 반환 유형, 노조 유형 및 무효 유형을 포함한 PHP 유형의 힌트 작업은 어떻게 작동합니까? Apr 17, 2025 am 12:25 AM

    PHP 유형은 코드 품질과 가독성을 향상시키기위한 프롬프트입니다. 1) 스칼라 유형 팁 : PHP7.0이므로 int, float 등과 같은 기능 매개 변수에 기본 데이터 유형을 지정할 수 있습니다. 2) 반환 유형 프롬프트 : 기능 반환 값 유형의 일관성을 확인하십시오. 3) Union 유형 프롬프트 : PHP8.0이므로 기능 매개 변수 또는 반환 값에 여러 유형을 지정할 수 있습니다. 4) Nullable 유형 프롬프트 : NULL 값을 포함하고 널 값을 반환 할 수있는 기능을 포함 할 수 있습니다.

    PHP 및 Python : 코드 예제 및 비교 PHP 및 Python : 코드 예제 및 비교 Apr 15, 2025 am 12:07 AM

    PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.

    PHP 대 기타 언어 : 비교 PHP 대 기타 언어 : 비교 Apr 13, 2025 am 12:19 AM

    PHP는 특히 빠른 개발 및 동적 컨텐츠를 처리하는 데 웹 개발에 적합하지만 데이터 과학 및 엔터프라이즈 수준의 애플리케이션에는 적합하지 않습니다. Python과 비교할 때 PHP는 웹 개발에 더 많은 장점이 있지만 데이터 과학 분야에서는 Python만큼 좋지 않습니다. Java와 비교할 때 PHP는 엔터프라이즈 레벨 애플리케이션에서 더 나빠지지만 웹 개발에서는 더 유연합니다. JavaScript와 비교할 때 PHP는 백엔드 개발에서 더 간결하지만 프론트 엔드 개발에서는 JavaScript만큼 좋지 않습니다.

    See all articles