PHP 문법에 관한 메모

[목차(도우미)]
처음 PHP를 접하거나 오랜 만에 PHP로 프로그래밍을 하려고 할 때 기억을 더듬기 쉽도록 메모해 두는 것이다. 요새는 워낙 검색에 의한 정보가 손쉽게 얻어지기 때문에 어디든지 가서 공짜 샘플을 마구 가져와서 풍월을 읊는 사람이 많이 있다. 대신 독창적이지는 못하다. 말하자면 끝이 없기 때문에, 기본적인 아이디어를 남겨 두면 창의성이 번뜩이는 후배들에게 도움이 될 것이다.

echo 문을 자주 쓰면 페이지 로딩 속도가 느려진다

echo 문은 서버에서 클라이언트로 통신을 발생시키는 것으로 알려져 있다. 그래서 짧은 한 두줄의 echo 문을 남발하면 통신 횟수가 증가하여 결과적으로는 통신량(트래픽) 부하가 올라갓 페이지 로딩이 느려진다.

한번에 보내는 패킷 바이트수는 대략 8192 바이트가 지금까지의 경험상 최적이었다. 이것은 TCP/IP의 경험이다. PHP에 국한된 사항이 아니다.
관련 외부 페이지: http://php.net/manual/en/function.echo.php

echo 문에서는 변수 전개가 가능하다

echo "$var is 변수 $_REQUEST[name]";
echo $var . "is 변수 $_REQUEST[name]";
echo $var . "is 변수 " . $_REQUEST["name"]; //여기는 마침표를 사용
echo $var , "is 변수 " , $_REQUEST["name"]; //여기는 쉼표를 사용
이것들은 모두 같은 결과가 된다.
물론 마침표를 써서 문자열을 붙이기하는 경우가 가장 처리속도가 늦게 된다. 연산이 들어가니까 느려지는 것이다.
PHP 개발자는 printf문 보다 echo를 좋아한단다.

POST와 GET 그리고 REQUEST

POST로 얻은 데이터나 GET으로 얻는 데이터를 구별하지 않고 얻어내려면 $_REQUEST['keyname']을 쓰면 된다.

PHP에서는 함수 오버로드가 없다

유감이지만 함수 오버로드(중복 재정의)가 없으므로 함수명을 지을 때는 자식이름 짓듯이 잘 지어두어야 좋다.

문장의 처음과 끝을 알리는 예약어를 써도 좋다
if (conditon) { process...}
else {process...}

if (conditon) : process...
else :process...
endif;
는 같다. 마지막에 endif;가 들어가므로 if 블럭이 길 경우에 알아보기 쉽게 된다. if 뿐 아니라 다른 제어 블럭도 endwhile등 이 존재한다.

이중 POST를 없애려면 redirect를 쓰는 것이 하나의 방법이다

이중 포스트를 없애는 것은 매우 잘 알려진 문제인데 PRG문제라는 이름이 붙어 있다. POST, REDIRECT, and GET이라는 머리글자로 POST한 뒤에 페이지 이동을 하고 GET으로 페이지 갱신을 수행하는 방식이다.
관련 외부 페이지: http://en.wikipedia.org/wiki/Post/Redirect/Get (영어 문서)

HTML 태그 요소를 생성하는 부품을 만들어 두면 좋다

이왕에 사용할 것이면 <input type="hidden"...>등의 요소를 echo 처리 해주는 함수를 만들어 두면 편리하다. 어디까지나 가독성의 관점에서 시작된 것이지만 구조적 프로그래밍이 되어 진보한 방식이 구현된다.
by 금메달.아빠 on 2011. 7. 13. 06:00