PSR-1

Programming/PHP 2016. 2. 17. 09:07

PSR(PHP Standard Recommendation)은 PHP-FIG (PHP Framework Interop Group) 이 주도하여 제안한 PHP 표준 권장안이다.

최근 대부분의 PHP 프로젝트들이 이 PSR을 표준으로 하여 개발 중이다.



PSR-1 : 기본 코딩 표준 (http://www.php-fig.org/psr/psr-1/)



PHP Tags


php 코드는 <?php ?>와 short echo 인 <?= ?> 태그 안에서만 사용해야 한다.



Character Encoding


php 파일의 문자 인코딩은 BOM(Byte order Mark) 없이 UTF-8 만 사용해야 한다.



Side Effects


다른 파일들과 클래스, 함수, 상수 등을 선언할 때 충돌하지 않도록 조건부 선언(no side-effects) 등을 사용한다.

side-effects 는 출력 생성, require 나 include 의 사용, 외부 서비스 연결, .ini 설정 변경, 에러나 예외 생략 global 이나 static 변수 변경, 파일 읽고 쓰기 등을 포함된다.

하나의 php 파일에 새로운 심볼(클래스, 함수, 상수 등)을 선언 + side-effects 를 사용 or

하나의 php 파일에 새로운 심볼(클래스, 함수, 상수 등)을 선언 + no side-effects 를 사용

side-effects 와 no 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
}
cs


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



Namespace and Class Names


네임스페이스와 클래스는 PSR-0, PSR-4 의 autoloading 을 따라야 한다.

즉, 각 클래스는 하나의 파일을 가져야 하고, 최소 하나의 레벨의 네임스페이스에 위치해야 한다 : (최상위 레벨은 vendor 이름)

클래스 이름은 StudlyCaps(대문자로 시작, 대문자로 구분) 방식으로 선언되어야 한다.

PHP 5.3 이후의 코드에서는 형식적인 네임스페이스를 사용해야 한다. (namespace Vendor\Model; class Foo)

PHP 5.2 이전의 코드에서는 가상 네임스페이스 관례를 사용해야 한다. (class Vendor_Model_Foo)


<?php
// PHP 5.3 and later:
namespace Vendor\Model;
 
class Foo
{
}
cs


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



Constants


클래스 상수는 _(underscore)로 구별된 대문자로만 선언되어야 한다.


<?php
namespace Vendor\Model;
 
class Foo
{
    const VERSION = '1.0';
    const DATE_APPROVED = '2012-06-01';
}
cs



Properties


권장하는 방식은 없지만 일관되게 합리적인 범위 내에서 선언한다.



Methods


메소드는 camelCase() (소문자로 시작, 대문자 구분) 로 선언한다.




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,