분류 php

PSR-1 : 기본 코딩 표준

컨텐츠 정보

  • 조회 400 (작성일 )

본문

표준의 이 섹션은 공유 PHP 코드 간의 높은 수준의 기술적 상호 운용성을 보장하는 데 필요한 표준 코딩 요소로 간주되어야 하는 요소로 구성됩니다.


https://www.php-fig.org/psr/psr-1/


이 문서에서 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" 및 "OPTIONAL"은 다음과 같습니다. RFC 2119에 설명 된 대로 해석됩니다.


1. 개요 

  • 파일은 <? php 및 <? = 태그 만 사용해야 합니다.
  • 파일은 PHP 코드 용 BOM없이 UTF-8 만 사용해야 합니다.
  • 파일은 심볼 (클래스, 함수, 상수 등)을 선언하거나 side-effects (예 : 출력 생성, .ini 설정 변경 등)을 유발해야 하지만 둘 다 수행해서는 안됩니다.
  • 네임 스페이스 및 클래스는 "자동로드" PSR : [PSR-0, PSR-4]를 따라야 합니다.
  • 클래스 이름은 StudlyCaps에서 선언해야 합니다.
  • 클래스 상수는 밑줄 구분 기호로 모두 대문자로 선언해야 합니다.
  • 메소드 이름은 camelCase에서 선언해야 합니다.

2. 파일 


2.1. PHP 태그 


PHP 코드는 반드시 긴 <? php?> 태그 또는 short-echo <? =?> 태그를 사용해야 합니다. 다른 태그 변형을 사용해서는 안됩니다.


2.2. 문자 인코딩 


PHP 코드는 BOM없이 UTF-8 만 사용해야 합니다.


2.3. Side Effects 


파일은 새로운 심볼 (클래스, 함수, 상수 등)을 선언하고 다른 side effects을 일으키지 않아야 합니다. 또는 side effects이 있는 로직을 실행해야 하지만 둘 다 수행해서는 안됩니다.


"side effects"이라는 문구는 단순히 파일을 포함하는 것으로부터 클래스, 함수, 상수 등을 선언하는 것과 직접 관련이 없는 논리의 실행을 의미합니다.


"Side effects"에는 출력 생성, require 또는 include의 명시 적 사용, 외부 서비스에 연결, ini 설정 수정, 오류 또는 예외 생성, 전역 또는 정적 변수 수정, 파일 읽기 또는 쓰기가 포함되지만 이에 국한되지는 않습니다. 곧.


다음은 선언과 Side effects이 모두 있는 파일의 예입니다. 즉, 피해야 할 사항의 예 :


<?php
// side effect: change ini settings
ini_set('error_reporting', E_ALL);

// side effect: loads a file
include "file.php";

// side effect: generates output
echo "<html>\n";

// declaration
function foo()
{
    // function body
}


다음 예제는 side effects 없이 선언이 포함 된 파일입니다. 즉, 에뮬레이트 할 항목의 예 :


<?php
// declaration
function foo()
{
    // function body
}

// conditional declaration is *not* a side effect
if (! function_exists('bar')) {
    function bar()
    {
        // function body
    }
}


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


네임 스페이스 및 클래스는 "자동로드"PSR : [PSR-0, PSR-4]를 따라야 합니다.


즉, 각 클래스는 그 자체로 파일에 있고 하나 이상의 레벨 (최상위 공급 업체 이름)의 네임 스페이스에 있습니다.


클래스 이름은 StudlyCaps에서 선언해야 합니다.


PHP 5.3 이후에 작성된 코드는 반드시 공식 네임 스페이스를 사용해야 합니다.


예를 들면 :


<?php
// PHP 5.3 and later:
namespace Vendor\Model;

class Foo
{
}


5.2.x 이전에 작성된 코드는 클래스 이름에 Vendor_ 접두사의 의사 이름 간격 규칙을 사용해야 합니다 (SHOULD).


<?php
// PHP 5.2.x and earlier:
class Vendor_Model_Foo
{
}


4. 클래스 상수, 속성 및 메서드 


용어 "클래스"는 모든 클래스, 인터페이스 및 특성을 나타냅니다.


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. Methods 


메서드 이름은 camelCase()에서 선언해야 합니다.