psr-1

Gunny Park·2024년 2월 23일
  1. 파일
    2.1. php 태그
    php 코드는 반드시 <?php ?> 태그이거나 <?= ?> 태그를 사용해야한다. 이외의 다른 태그 변형은 반드시 사용하지 않는다.

2.2. 문자 인코딩
php 코드는 BOM 없이 utf-8로만 사용해야한다.

2.3. 사이드 이펙트
파일은 새로운 symbols (classes, functions, constants, etc.) 선언하고 다른 side effect들을 일으키지 않아야하거나 사이드 이펙트의 로직을 실행해야하며 둘 다 같이 사용하면 안된다.

side effect는 로직의 실행이 include된 파일로부터 클래스, 함수, 상수로부터 직접적으로 연관되지 않는 것을 의미한다.

side effect는 다음이 포함되지만 이에 국한되지는 않습니다.
: 출력 생성, require이나 include를 명시적 사용, 외부 서비스 연동, ini 설정을 수정, 에러나 예외 발생, global이나 static(정적) 변수, 파일이나 기타 등등으로부터 읽어온 것

(피해야할 것들 예)사이드 이펙트와 선언들을 모두 사용한 파일 예

<?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
}

사이드 이펙트 없이 선언한 파일 예시

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

// conditional declaration is *not* a side effect
if (! function_exists('bar')) {
    function bar()
    {
        // function body
    }
}
  1. namespace와 class 이름
    네임스페이스와 클래스는 반드시 autoloading을 따라야한다.
    클래스 이름은 반드시 첫글자를 대문자로 선언해야한다.

php 5.3부터 코드는 공식적인 네임스페이스를 사용해야한다.

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

class Foo
{
}
  1. 클래스 상수, property, 함수
    4.1. 클래스 상수는 반드시 _로 구분한 대문자로 선언해야한다.
<?php
namespace Vendor\Model;

class Foo
{
    const VERSION = '1.0';
    const DATE_APPROVED = '2012-06-01';
}

4.2. Property
property 이름은 합리적인 범위(vendor-level, package-level, class-level, or method-level)에서 일관되게 적용되게 지어야한다.

4.3. 함수
함수 이름은 카멜케이스로 선언되야한다.

profile
ASD programmer

0개의 댓글