[PSR 규범 테마 (2)] PSR-1 기본 코드 규범

4859 단어
전재:https://github.com/PizzaLiu/PHP-FIG/blob/master/PSR-1-basic-coding-standard-cn.md

기본 코드 사양


본 규범은 공유된 PHP 코드 간에 비교적 높은 수준의 기술 호환성을 확보하기 위해 코드 기본 요소에 관한 표준을 제정하였다.
키워드'필수'('MUST'),'필수불가/필수불가'('MUST NOT'),'필요'('REQUIRED'),'회'('SHALL'),'아니오'(SHALL NOT),'응당'('SHOULD'),'해서는 안 된다'('SHOULD NOT'),'추천'('RECOMMENDEDEDED'),'가능'('MAY'),'RFC'('OPTIONTION2119) 상세 설명 참조.

1. 개요

  • PHP 코드 파일은 <?php 또는 <?= 레이블로 시작해야 합니다.
  • PHP 코드 파일은 BOM UTF-8으로 인코딩해야 합니다.
  • PHP 코드에서 클래스, 함수, 상수 등 성명만 정의하거나 의 다른 조작(예를 들어 파일 출력 생성 및 수정.ini 프로필 등)이 발생할 수 있으니 둘 중 하나만 선택할 수 있다.
  • 네임스페이스 및 클래스는 PSR의 자동 로드 사양: PSR-0 또는 PSR-4 중 하나에 해당해야 합니다.
  • 류의 명칭은 반드시 StudlyCaps의 대문자로 시작하는 낙타봉 명칭 규범을 따라야 한다.
  • 류의 상수는 모든 자모가 대문자로 써야 하고 단어 사이는 밑줄로 구분해야 한다.
  • 방법의 명칭은 반드시 camelCase식의 소문자 시작 낙타봉 명명 규범에 부합해야 한다.

  • 2. 파일


    2.1. PHP 레이블


    PHP 코드는 <?php ?> 긴 태그 또는 <?= ?> 짧은 출력 태그를 사용해야 합니다.다른 사용자 정의 탭을 사용할 수 없습니다.

    2.2. 문자 인코딩


    PHP 코드는 반드시 BOM UTF-8 인코딩만 사용할 수 있어야 합니다.

    2.3. 종속 효과(부작용)


    PHP 파일에서 클래스, 함수, 상수 등 종속효과가 발생하지 않는 새로운 성명만 정의하거나, 종속효과가 발생하는 논리적 조작만 정의하지 않으면 안 된다.
    종속효과(side effects)라는 단어는 파일을 포함해서만 클래스, 함수, 상수 등을 직접 설명하지 않고 실행하는 논리적 조작을 의미한다.
    '종속효과'는 출력 생성, 직접적인 require 또는 include, 외부 서비스 연결, ini 설정 수정, 오류 또는 이상 던지기, 전역 또는 정적 변수 수정, 파일 읽기 또는 쓰기 등에 국한되지 않는다.
    다음은 선언과 종속 효과가 포함된 코드의 반례입니다.
    <?php
    //     :   ini   
    ini_set('error_reporting', E_ALL);
    
    //     :    
    include "file.php";
    
    //     :    
    echo "<html>
    "; // function foo() { // }

    다음은 종속 효과가 발생하지 않는다는 선언만 포함된 코드의 예입니다.
    <?php
    //     
    function foo()
    {
        //       
    }
    
    //     ** **      
    if (! function_exists('bar')) {
        function bar()
        {
            //       
        }
    }

    3. 네임스페이스 및 클래스


    네임스페이스 및 클래스 이름은 PSR-0을 따라야 합니다.
    규범에 따라 모든 클래스는 하나의 파일로 독립되고 이름 공간은 최소한 하나의 차원이 있습니다: 최고급 조직 이름 (vendor name).
    클래스의 명칭은 반드시 StudlyCaps대문자로 시작하는 낙타봉의 명칭 규범을 따라야 한다.
    PHP 5.3 및 이후 버전의 코드는 정식 네임스페이스를 사용해야 합니다.
    예를 들면 다음과 같습니다.
    <?php
    // PHP 5.3        
    namespace Vendor\Model;
    
    class Foo
    {
    }

    5.2.x 및 이전 버전에서는 위명명 공간을 사용해야 하며, 최고급 조직 이름 (vendor name), 예를 들어 Vendor_을 클래스 접두사로 약정합니다.
    <?php
    // 5.2.x        
    class Vendor_Model_Foo
    {
    }

    4. 클래스의 상수, 속성 및 방법


    이곳의 '클래스' 는 모든 클래스, 인터페이스, 복용 가능한 코드 블록 (traits) 을 가리킨다

    4.1. 상수


    클래스의 상수에 있는 모든 자모는 반드시 대문자로 써야 하며, 단어 사이의 밑줄은 구분해야 한다.다음 코드를 참조하십시오.
    <?php
    namespace Vendor\Model;
    
    class Foo
    {
        const VERSION = '1.0';
        const DATE_APPROVED = '2012-06-01';
    }

    4.2. 등록 정보


    클래스의 속성 명칭은 대문자로 시작하는 낙타봉식($StudlyCaps), 소문자로 시작하는 낙타봉식($camelCase) 또는 밑줄 구분식($under_score)을 따를 수 있다. 본 규범은 강제 요구를 하지 않지만 어떤 명칭 방식을 따르든지 일정한 범위 내에서 일치해야 한다.이 범위는 전체 팀, 전체 가방, 전체 유형 또는 전체 방법일 수 있다.

    4.3. 메서드


    방법명칭은 반드시 camelCase()식의 소문자 첫머리 낙타봉 명명규범에 부합해야 한다.

    좋은 웹페이지 즐겨찾기