Coding Standards Coding Conventions
Wednesday, April 24, 2024 6:20 PMPHP Code Tags
- 반드시
<?php
와<?=
만을 사용한다.
<?php
// some code..
<?=$someVariable?>
php 파일을 template 처럼 사용하는 경우,
echo
태그는 가급적<?=
를 사용한다.
Closing Tag
- PHP 소스 코드만 포함된 경우,
?>
를 생략 한다.
class Foo
{
}
Indenting
-
TAB
을 사용하지 않으며, 4자리의SPACE
를 사용한다. - namespace, php open tag 레벨의 인덴트를 하지 않는다.
final class Foo {
public function Bar() {
// do something..
}
}
Control Structures
Alternative syntax
- Alternative syntax 를 사용하지 않는다.
for ($i = 0; $i < 10; $i++) {
echo $i;
}
Curly brackets
-
{
,}
사용시 줄바꿈 하지 않는다.
if (1 == true) {
echo '1';
}
Indenting
-
{
,}
내부는 반드시 들여쓰기 한다.
switch ($mode) {
case 'get' :
// return
break;
case 'set' :
// assign
break;
default :
// error
break;
}
Control Statements
-
Control Keyword와 조건문 사이에는 반드시 1개의
SPACE
가 포함되어야 한다. -
else if
대신elseif
를 사용한다.
if (1 == true) {
echo '1';
} elseif (0 == false) {
echo '1';
}
Forbidden Functions
-
sizeof
대신count
를 사용한다. -
delete
대신unset
을 사용한다. -
print
대신echo
를 사용한다. -
is_null
대신if ($var === null);
을 사용한다. -
create_function
대신anonymous function
을 사용한다.
Function Calls
- 메서드 또는 함수 호출시
->
,(
,)
,;
사이에SPACE
가 포함되면 안된다. - 각 Arguments 사이에
SPACE
를 삽입한다.
$result = someFunction($var1, $var2, $var3);
$result = someFunction($var1);
$result = someFunction();
$result = $object->someFunction();
Class Definitions
- 하나의 파일에는 하나의 클래스를 생성해야 한다.
-
{
를 줄바꿈 한다. - classloader 에서 클래스 경로를 찾을 수 있도록 namespace 를 정의한다.
namespace Chevolet;
class Spark extends Car
{
}
Filenames
- 클래스명과 파일명이 일치해야 한다.
- classloader에서 클래스를 찾을 수 있도록 namespace 를 sub-directory 로 간주한 위치에 파일을 저장한다.
Framework\Application\Application 클래스는
기본경로/Framework/Application/Application.php 파일에 위치해야 한다.
Function Definitions
- 함수명과
(
,)
사이에SPACE
가 포함되면 안된다. - 클래스와 마찬가지로
{
를 줄바꿈 한다.
function race($lamborghini, $ferrari = null)
{
}
Arguments
- 각 Argument 사이에
SPACE
를 넣어 가독성을 높인다.
function race($car1, $car2)
{
}
Comments
Inline Comment
-
//
만 사용한다. -
#
을 사용하지 않는다.
// some comment.
Block Comment
- 2줄 이상의 inline comment 를 사용하지 않는다.
/*
* some comment.
* some comment.
*/
Document Comments
- 파일, 함수, 메소드, 프로퍼티, 클래스, 인터페이스에는 phpDocumentor형식의 Document Comments를 작성해야 한다.
- 구현 메소드의 Document Comments 는 {@inheritDoc} 태그를 사용한다.
/**
* 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 Godomall to newer
* versions in the future.
*
* @copyright ⓒ 2024, NHN COMMERCE Corp.
*/
namespace Bundle\Controller\Admin\Base;
use Manager;
use Globals;
/**
* Index controller.
*/
class Index extends \Base\Controller\Admin\Controller
{
}
Task Tags
- @todo 키워드를 주석에 사용하여 추가 작업에 대한 내용을 기록해 둘 수 있다.
TODO, FIXME, XXX 는 사용하지 않는다.
// @todo : $some 값이 0 일때 오류 발생 할 수 있으므로, 수정해야 합니다.
File Formats
- BOM 이 없는 UTF-8 인코딩을 사용한다.
- 파일 인코딩을 혼용하지 않는다. (ex: EUC-KR 환경에서 AJAX 처리를 위해 일부 파일을 UTF-8로 저장하는 행위)
- 줄바꿈 문자는 Unix 타입의
LF
만을 사용한다. - 줄끝 공백 제거 처리한다.
- 파일의 맨 마지막 라인에 빈 공백 라인을 추가한다.
Etc
Operators
- 모든 연산자 앞, 뒤로 1개의 공백을 삽입한다.
-
Ternary Operator
는 중첩 사용하지 않고, 중간 구문을 생략 사용하지 않는다. -
Error Control Operators
(@) 를 사용하지 않는다.
$width = $max - $min;
$bool = $max > $min ? true : false;
$string = $prefix . $postfix;
$file = file('./file.txt');
Strings
-
"
대신'
를 사용한다. - SQL문 과 같이 내부에
'
가 쓰일 수 있는 경우"
사용을 허용한다. - Heredoc syntax를 사용하지 않는다.
$sql = "where id = 'blue'";
$id = 'blue';
$sql = "where id = '{$id}'";
Arrays
- 배열을 여러줄로 정의할 경우 마지막 원소의 끝에
,
를 추가한다. - 배열 선언시 가급적 축약형 구문을 사용한다.
$array = [
'key1' => 'var1',
'key2' => 'var2',
'key3' => 'var3',
];
$array2 = ['a', 'b', 'c'];