들여쓰기와 줄 길이
공백 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,
false 및
null
은 예외로, 항상 소문자여야 합니다.
상수 정의 예제
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