[PSR 규범 테마 (2)] PSR-1 기본 코드 규범
기본 코드 사양
본 규범은 공유된 PHP 코드 간에 비교적 높은 수준의 기술 호환성을 확보하기 위해 코드 기본 요소에 관한 표준을 제정하였다.
키워드'필수'('MUST'),'필수불가/필수불가'('MUST NOT'),'필요'('REQUIRED'),'회'('SHALL'),'아니오'(SHALL NOT),'응당'('SHOULD'),'해서는 안 된다'('SHOULD NOT'),'추천'('RECOMMENDEDEDED'),'가능'('MAY'),'RFC'('OPTIONTION2119) 상세 설명 참조.
1. 개요
<?php
또는 <?=
레이블로 시작해야 합니다. BOM UTF-8
으로 인코딩해야 합니다.
의 다른 조작(예를 들어 파일 출력 생성 및 수정.ini 프로필 등)이 발생할 수 있으니 둘 중 하나만 선택할 수 있다.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()
식의 소문자 첫머리 낙타봉 명명규범에 부합해야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.