PSR-1: 기본 코딩 표준
1. 파일(Files)
1-1.PHP 태그(PHP Tags)
PHP 코드는 <?php ?> 또는 <?= ?> 을 사용해야 한다(MUST)
1-2. 문자 인코딩(Character Encoding)
PHP 코드는 BOM 없이 UTF-8을 사용해야한다.(MUST)
1-3. 부작용(Side Effects)
파일은 "Side effects"를 발생시키지 않으며 새로운 클래스, 상수, 함수 등 을 선언하거나(SHOULD),
"Side effects" 로직을 실행 해야한다(SHOULD).
둘 다(선언과 "Side effects") 수행하면 안된다(SHOULD NOT).
"Side effects"는 선언된 클래스, 함수, 상수 등 과 직접적으로 관련되지 않은 로직을 파일에 포함하여 실행하는 것을 의미한다.
"Side effects"는 output 생성, 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
}
}
2. 네임스페이스와 클래스 네임 (Namespace and Class Names)
네임스페이스와 클래스는 "autoloading"(PSR-0, PSR-4)을 따라야 한다(MUST).
각각의 클래스는 개별 파일 안에 있어야하고, 최소한 한 수준(최상위 공급자 이름)의 네임스페이스 안에 있음을 의미한다.
클래스의 이름은 StudlyCaps 처럼 선언되어야 한다.(MUST)
PHP 5.3 버전 이후의 코드는 공식 네임스페이스를 사용해야한다.(MUST)
예시:
<?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
{
}
3. 클래스 상수, 속성 및 메서드 (Class Constants, Properties, and Methods)
Class는 모든 Class, Interface, Trait 들을 나타낸다.
3-1. 상수(Constants)
상수는 대문자와 구분자(_)로 선언되어야 한다.(MUST)
예시:
<?php
namespace Vendor\Model;
class Foo
{
const VERSION = '1.0';
const DATE_APPROVED = '2012-06-01';
}
3-2. 속성(Properties)
$StudlyCaps, $camelCase, $under_score와 같이 속성 이름을 사용하도록 권장하는 것을 의도적으로 피한다.
합리적인 범위 안에서 일관성있게 이름이 적용되어야 한다.(SHOULD)
합리적인 범위는 공급자 수준(vendor-level), 패키지 수준(package-level), 클래스 수준(class-level), 메서드 수준(method-level)이 될 수 있다.
3-3. 메서드(Methods)
메서드의 이름은 camelCase()와 같이 선언되어야 한다.(MUST)
출처
https://www.php-fig.org/psr/psr-1
'PHP' 카테고리의 다른 글
PHP sort() (0) | 2023.06.27 |
---|---|
PHP 암호화 복호화 (0) | 2022.11.03 |
PHP PDO() (0) | 2019.06.21 |
PHP mysqli() (0) | 2019.06.21 |