• 반드시 <?php 와 <?= 만을 사용한다.
<?php
// some code..
<?
// some code..

Closing Tag

  • PHP 소스 코드만 포함된 경우, ?> 를 생략 한다.
<?php
class Foo
{
}
  • 을 사용하지 않으며, 4자리의 공백을 사용한다.
  • namespace, php open tag 레벨의 인덴트를 하지 않는다.
<?php
final class Foo {
    public function Bar() {
        // do something..
    }
}
<?php
    final class Foo {
        public function Bar() {
            // do something..
        }
    }

Alternative syntax

<?php
for ($i = 0; $i < 10; $i++) {
    echo $i;
}
<?php
for ($i = 0; $i < 10; $i++) :
    echo $i;
endfor;

Curly brackets

  • { } 사용시 줄바꿈 하지 않는다.
<?php
if (1 == true) {
    echo '1';
}

<?php
if (1 == true)
{
    echo '1';
}

Indenting

  • { } 내부는 반드시 들여쓰기 한다.
<?php
switch ($mode) {
    case 'get' :
        // return
        break;
    case 'set' :
        // assign
        break;
    default :
        // error
        break;
}
<?php
switch ($mode) {
case 'get' :
    // return
    break;
case 'set' :
    // assign
    break;
default :
    // error
    break;
}

Control Statements

  • Control Keyword와 조건문 사이에는 반드시 1개의 공백이 포함되어야 한다.
  • else if 대신 elseif 를 사용한다.
<?php
if (1 == true) {
    echo '1';
} elseif (0 == false)  {
    echo '1';
}
<?php
if(1 == true) {
    echo '1';
} else if ( 0 == false )  {
    echo '1';
}
  • 메서드 또는 함수 호출시 -> ( ) ; 사이에 공백이 포함되면 안된다.
  • 각 Arguments 사이에 공백을 삽입한다.
<?php
$result = someFunction($var1, $var2, $var3);
$result = someFunction($var1);
$result = someFunction();

$result = $object->someFunction();
<?php
$result = someFunction($var1,$var2,$var3);
$result = someFunction( $var1 );
$result = someFunction ();

$result = $object -> someFunction();
  • 하나의 파일에는 하나의 클래스를 생성해야 한다.
  • { 를 줄바꿈 한다.
  • classloader 에서 클래스 경로를 찾을 수 있도록 namespace 를 정의한다.
<?php
namespace Chevolet;

class Spark extends Car
{
}
<?php
class Chevolet_Spark extends Car {

}

Filenames

  • 클래스명과 파일명이 일치해야 한다.
  • classloader에서 클래스를 찾을 수 있도록 namespace 를 sub-directory 로 간주한 위치에 파일을 저장한다.
Framework\Application\Application 클래스는
기본경로/Framework/Application/Application.php 파일에 위치해야 한다.
  • 함수명과 ( ) 사이에 공백이 포함되면 안된다.
  • 클래스와 마찬가지로 { 를 줄바꿈 한다.
<?php
function race($lamborghini, $ferrari = null)
{
}
<?php
function race ($lamborghini,$ferrari=null) {

}

Arguments

  • 각 Argument 사이에 공백을 넣어 가독성을 높인다.
<?php
function race($car1, $car2)
{
}
<?php
function race($car1,$car2)
{
}

Inline Comment

  • // 만 사용한다.
  • # 을 사용하지 않는다.
<?php
// some comment.
<?php
# some comment.

Block Comment

  • 2줄 이상의 inline comment 를 사용하지 않는다.
<?php
/*
 * some comment.
 * some comment.
 */
<?php
// some comment.
// some comment.

Document Comments

  • 파일, 함수, 메소드, 프로퍼티, 클래스, 인터페이스에는 phpDocumentor형식의 Document Comments를 작성해야 한다.
  • 구현 메소드의 Document Comments 는 {@inheritDoc} 태그를 사용한다.
<?php
/**
 * This is commercial software, only users who have purchased a valid license
 * and accept to the terms of the License Agreement can install and use this
 * program.
 *
 * Do not edit or add to this file if you wish to upgrade Enamoo S5 to newer
 * versions in the future.
 *
 * @copyright Copyright (c) 2016 NHN godo: Corp.
 * @link      http://www.godo.co.kr
 */

namespace Bundle\Controller\Admin\Base;

use Manager;
use Globals;

/**
 * Index controller.
 */
class Index extends \Base\Controller\Admin\Controller
{
}

Task Tags

  • @todo 키워드를 주석에 사용하여 추가 작업에 대한 내용을 기록해 둘 수 있다.
<?php
// @todo : $some 값이 0 일때 오류 발생 할 수 있으므로, 수정해야 합니다.
  • BOM 이 없는 UTF-8 인코딩을 사용한다.
  • 파일 인코딩을 혼용하지 않는다. (ex: EUC-KR 환경에서 AJAX 처리를 위해 일부 파일을 UTF-8로 저장하는 행위)
  • 줄바꿈 문자는 Unix 타입의 LF 만을 사용한다.
  • 줄끝 공백 제거 처리한다.
  • 파일의 맨 마지막 라인에 빈 공백 라인을 추가한다.

Operators

  • 모든 연산자 앞, 뒤로 1개의 공백을 삽입한다.
  • Ternary Operator는 중첩 사용하지 않고, 중간 구문을 생략 사용하지 않는다.
  • Error Control Operators(@) 를 사용하지 않는다.
<?php
$width = $max - $min;
$bool = $max > $min ? true : false;
$string = $prefix . $postfix;
$file = file('./file.txt');
<?php
$width = $max- $min;
$bool  = $max>$min ? true : false;
$string= $prefix.$postfix;
$file = @file('./file.txt');
$ternary = $max ?: $min;

Strings

  • " 대신 ' 를 사용한다.
  • SQL문 과 같이 내부에 ' 가 쓰일 수 있는 경우 " 사용을 허용한다.
  • Heredoc syntax를 사용하지 않는다.
<?php
$sql = "where id = 'blue'";

$id  = 'blue';
$sql = "where id = '{$id}'";
<?php
$sql = 'where id = \'blue\'';

$id  = 'blue';
$sql = "where id = '$id'";

Arrays

  • 배열을 여러줄로 정의할 경우 마지막 원소의 끝에 ,를 추가한다.
  • 배열 선언시 가급적 축약형 구문을 사용한다.
<?php
$array = array(
    'key1' => 'var1',
    'key2' => 'var2',
    'key3' => 'var3',
);

$array2 = ['a', 'b', 'c'];
<?php
$array = array(
    'key1' => 'var1',
    'key2' => 'var2',
    'key3' => 'var3'
);