들여쓰기와 줄 길이
공백 4개의 들여쓰기를 사용하되 탭은 사용하지 않습니다.
탭 대신 공백을 사용해야 글씨체에 상관없이 일정하게 보입니다.
(개인이 같은 에디터 툴, 폰트를 사용한다면 탭을 사용해도 상관 없습니다만 소스 코드 공유, 호환을 위해 공백을 사용하는 것을 권장합니다.)


제 어 구조

제어 구조에는 if, for, while, switch 등이 있습니다. 아래는 if 예제입니다.
<?php
if ((condition1) || (condition2)) {
    action1;
} elseif ((condition3) && (condition4)) {
    action2;
} else {
    defaultaction;
}
?>

제어 구조에서는 함수 호출과 구별하기 위해서 키워드와 ( 사이에 공백을 1개 둡니다.
블록을 감싸는 { 는 끝에 입력합니다. 또한 아래와 같이 블록 내용이 한줄이라도 { 로 감싸는 것이 좋습니다.
if(condition)
    action1;
이 아닌
if(condition) {
    action1;
}
으로 입력합니다.


switch 문장의 경우는 다음과 같이 합니다.
<?php
switch (condition) {
case 1:
    action1;
    break;

case 2:
    action2;
    break;

default:
    defaultaction;
    break;
}
?>

함수 호출
함수명과 (및 최초의 파라미터 각각의 사이에는 공백을 두지 않고, ,(쉼표)와 파라미터 사이에는 공백을 두며, 마지막 파라미터와 ); 사이에는 공백을 두지 않습니다.
<?php
$var = foo($bar, $baz, $quux);
?>

위와 같이 함수의 리턴 값을 변수에 대입할 때에 사용하는 =(등호)의 좌우에는 공백을 1개씩 둡니다. 아래와 같이 관련된 문장은 가독성을 향상시키기 위해 여러 공백을 두면 좋습니다.
<?php
$short             = foo($bar);
$long_variable = foo($baz);
?>


함 수 정의
함수 정의는 아래와 같이 "one true brace" 로 불리는 표기에 따릅니다.
<?php
function fooFunction($arg1, $arg2 = '')
{
    if (condition) {
        statement;
    }
    return $val;
}
?>

기 본값을 가지는 인수는 목록의 마지막에 둡니다. 특별한 경우를 제외하고는 함수가 리턴값을 돌려주도록 합니다. 아래 예제를 봅시다.
<?php
function connect(&$dsn, $persistent = false)
{
    if (is_array($dsn)) {
        $dsninfo = &$dsn;
    } else {
        $dsninfo = DB::parseDSN($dsn);
    }
    if (!$dsninfo || !$dsninfo['phptype']) {
        return $this->raiseError();
    }

    return true;
}
?>


주석
주석 기호는 C언어 형식의 /**/ 와 표준 C++ 주석인 //를 사용합니다.
Perl 형식의 #는 사용하지 않습니다.
<?php
/* comment */

/**
* comment
*
* comment
*
* comment
* comment
*/


// comment
?>


코드 연결
어디든지 클래스 파일을 무제한으로 연결을 하려면 require_once를 사용합니다.
팩토리 메소드등의 클래스 파일을 제한적으로 연결하려면 include_once를 사용합니다.
어디든 클래스 파일을 오직 한번만 연결하게 될 것입니다. 같은 파일을 공유하므로 중복될까봐 걱정하지 않아도 됩니다. require_once로 연결된 파일은 include_once에 의해 다시 연결되지 않을 것입니다.


PHP 코드 태그
PHP 코드 범위는 항상 <?php ?>을 사용합니다. <? ?>같 은 짧은 태그는 안됩니다.
그 래야 다른 운영체제와 환경에서도 PHP 코드를 옮겨 사용할 수 있습니다.


헤더 주석 블록
주 석의 자세한 설명은 생략


명명
클래스에는 내용을 이해할 수 있는 이름을 지정해야 합니다. 단축어의 사용은 가능한 한 피합니다. 클래스명은 항상 대문자로 시작해야 합니다. 상위 클래스의 확장 클래스는 _(언더 스코어)로 연결 합니다. 아래는 클래스 명의 예제입니다.
Log
Net_Finger
HTML_Upload_Error


함수와 메소드
함 수와 메소드는 "studly caps" 형식을 사용해 이름을 붙여야 합니다. 함수는 패키지 이름의 충돌을 피하기 위해서 접두사로 패키지명을 추가해야 합니다. 이름의 첫글자는 소문자로, 새로운 단어를 시작할 때의 각 첫글자는 대문자로 합니다. 아래 예제가 있습니다.
connect()
getData()
buildSomeWidget()
XML_RPC_serializeData()

내부에서 사용되는 클래스 멤버는 _(언 더 스코어) 1개를 앞에 붙입니다. 아래 예제가 있습니다.
_sort()
_initTree()
$this->_status


상수
상 수는 항상 모두 대문자로 단어의 끝에는 _(언더 스코어)를 사용해야 합니다. 예를 들면 DB:: 패키지로 사용하는 상수는 모두 DB_ 로 시작합니다.
주의: true, falsenull 은 예외로, 항상 소문자여야 합니다.
상수 정의 예제
define('ROOT_DIR', './');


전역 변수

패 키지에서 전역 변수를 정의할 필요가 있는 경우, 그 이름은 _(언 더 스코어)를 앞뒤에 붙인 패키지명으로 시작해야 합니다. 예를 들면, PEAR 패키지는 $_PEAR_destructor_object_list 이라는 이름 의 전역 변수를 사용합니다.
정의되어 있는 전역 변수 예제
$_COOKIE
$_SERVER
$_REQUEST

파일 형식
아스키 텍스트로 저장 합니다.
ISO-8859-1 문자 인코딩을 사용합니다.
PHP 태그를 닫는 ?> 아래에 1개의 줄이 있어야 합니다.


에러 처리
PHP를 실행하면 예기치 않은 에러가 발생할 수 있습니다. 어떤 에러가 왜 발생했는지 알기 위해 에러 처리 코드를 삽입합니다. 아래는 오류발생시 메시지를 보여주는 예제입니다.
<?php
function connectDB($dsn) {
    $this->db =& DB::connect($dsn);
    if (DB::isError($this->db)) {
        throw new Example_Datasource_Exception(
                "$dsn에 연결할 수 없습니다:" . $this->db->getMessage()
        );
    }
}
?>

원문: http://pear.php.net/manual/en/
번 역: © simulz

'개발도 하냐?' 카테고리의 다른 글

RAD(Rapid Application Development)  (0) 2010.07.08
디자이너에게 배우다.  (1) 2010.07.07
mod_security AND fckeditor  (0) 2010.06.21
Prototype URL encode, decode  (0) 2010.06.19
정규표현식(regular expressions)  (0) 2010.06.16

+ Recent posts