프리랜서 웹디자이너 RELATION RELATION.CO.KR

RELATION 로고

PHP 웹프로그래밍

[기타] 잘못된 PHP 코딩 스타일

0000.00.00
1. 문자 쿼테이션

- 잘못된 코딩
$ret = $arr[var1];

- 올바른 코딩
$ret = $arr['var1'];

배열의 키 문자는 반드시 싱글 쿼테이션으로 처리해 주어야 한다. 쿼테이션이 들어가 있지 않은 변수인 경우 Notice 에러가 발생한다.
또한 싱글 쿼테이션과 더블 쿼테이션의 차이점을 명확히 알고 사용하는 것도 중요하다. 일반 문자열의 경우에는 싱글 쿼테이션을 사용하는 것이 바람직하다.


2. 변수 초기화

- 잘못된 코딩
$str .= "abc";

- 올바른 코딩
$str = "";
$str .= "abc";

변수를 초기화 하지 않은 상태에서 변수를 마구 사용하는 경우가 허다하다. 이는 올바른 코딩 스타일이 아니다.
첫번째 구문은 초기화 없이 $str 이 추가되므로 Notice 에러가 발생한다. 변수를 초기화하는 습관을 들이도록 노력하자.


3. 변수 타입의 변경

- 잘못된 코딩
$int = 3;
$int = "Hello, World";

- 올바른 코딩
$int = 3;
$str = "Hello, World";

PHP 에서는 형변환이 아주 자유롭지만 그렇다고 해서 위와 같이 마구잡이로 형변환을 하는 것은 아주 좋지 못한 습관이다.
되도록 동일한 변수명의 경우 동일한 타입을 유지시켜주는 것이 좋다.


4. isset 의 활용

- 잘못된 코딩
$var = $_POST['var'];

- 올바른 코딩
$var = isset($_POST['var']) ? $_POST['var'] : NULL;

POST 값으로 var 이라는 변수의 값을 넘길 경우에 대부분의 php 프로그래머들은 위와 같이 코딩한다.
그러나 이러한 코딩은 가끔씩 Notice 에러를 발생시킨다. 이유는 POST 로 var 라는 변수의 값이 넘어오지 않았을 때이다.
따라서 정확하게 사용하려면 두번째와 같이 코딩해야 한다. 그러나 매번 이렇게 코딩하는 것이 번거롭기 때문에 적당한 함수를 만들어서 사용하는 것이 좋다.


5. global off

대부분의 php 프로그래머들은 global on 에 익숙해져 있다. 즉 GET, POST 로 넘어오는 변수를 별도로 $_GET, $_POST 를 통해 받지 않고 그냥 바로 사용하는 경우이다. 그러나 이것은 보안에 무척 취약하며 반드시 global off 로 설정되어 있다고 생각하고 프로그램을 작성해야 한다.


6. 연산자 사용시 주의

- 잘못된 코딩
$foo[$i++] = $j;

- 올바른 코딩
$foo[$i] = $j;
$i++;

++, -- 연산자는 되도록 키 변수안에서 사용하지 않도록 한다.


7. 잘못된 for 문 사용

- 잘못된 코딩
for($i=0; $i<count($loop); $i++) {
...
}

- 올바른 코딩
for($i=0, $max=count($loop); $i<$max; $i++) {
...
}

for 문안의 조건절에 되도록 함수를 사용하지 않도록 한다. 실수로 무한루프가 도는 경우가 생길 수 있다.


8. 잘못된 if 문의 사용

- 잘못된 코딩
if($row = getRows()) {
...
}

- 올바른 코딩
if(($row = getRows()) == true) {
...
}

조건절 안에서는 되도록 코딩을 쉽고 명확하게 해야 한다. 첫번째와 같이 코딩한 경우 다른 사람이 소스를 잘못 읽을 가능성이 아주 많다. 또한 if 문에서는 간단한 구문일지라도 { } 를 반드시 사용하길 권한다.


9. error_reporting() 사용

확실한 디버깅을 위해 error_reporting(E_ALL) 을 사용하길 권한다.
이를 통해 내가 어느 부분에서 코딩을 잘못하고 있었는지를 쉽게 찾아낼 수 있을 것이다.

이 포스트 공유하기

글수정  글삭제 전체목록
<
 
1
           
검색    글쓰기
번호 제 목 작성자 작성일 조회수
중요 [서버] 보안서버 무료 SSL 구축 꿘쓰 2017.09.20 6086
중요 [MYSQL함수] PHP, MYSQL 기초 쿼리문 정리 꿘쓰 2011.04.15 7350
중요 [MYSQL PHP 함수] PHP, MYSQL 기초 쿼리문 정리   꿘쓰 2006.03.10 12625
186 [소스] 특정일 특정 날짜 구하기 작성글은 비공개로 설정 되었습니다. 꿘쓰 2020.08.31 1
185 [서버] URL 에서 파일 확장자(.html , .php) 없애기!!! 꿘쓰 2020.03.16 109
184 [소스] PHP function 테스트 꿘쓰 2020.03.05 120
183 [MYSQL PHP 함수] is_dir 꿘스 2020.01.31 121
182 [MYSQL PHP 함수] DB table 같은 이름 체크 꿘쓰 2019.12.13 155
181 [소스] 게시글 번호로 페이지 번호 구하기 댓글 없는 게시판 작성글은 비공개로 설정 되었습니다. 꿘쓰 2019.11.18 3
180 [소스] 페이지 이동, 페이지 자동이동 PHP 꿘쓰 2019.11.04 188
179 [MYSQL PHP 함수] PHP 현재 페이지명, 도메인명 URL 정보 꿘쓰 2019.06.24 280
178 [기타] PHP 소수점 올림,반올림, 버림 꿘쓰 2018.07.06 949
177 [기타] php를 이용한 mysql 엑셀 파일 만들기 꿘쓰 2019.07.24 1394
176 [MYSQL PHP 함수] 특정값 조회 where 컬럼명 in (값,,,,,,) 꿘쓰 2018.01.15 940
175 [서버] 보안서버 무료 SSL 구축 꿘쓰 2017.09.20 6086
174 [소스] LK Query 작성글은 비공개로 설정 되었습니다. 꿘쓰 2017.08.23 2
173 [소스] php xml 파일 생성하기 작성글은 비공개로 설정 되었습니다. 꿘쓰 2017.06.05 1
172 [소스] 네이버 신디케이션 날짜 변경 작성글은 비공개로 설정 되었습니다. 꿘쓰 2017.06.01 1
171 [소스] 날짜 계산(DATE_ADD) 꿘쓰 2017.05.08 1116
170 [소스] 기간별 호텔 룸가격 구하기 작성글은 비공개로 설정 되었습니다. 꿘쓰 2017.05.05 1
169 [소스] 기간 검색 작성글은 비공개로 설정 되었습니다. 꿘쓰 2017.05.05 3
168 [문자열함수] 알파벳 순서대로 출력하기 꿘쓰 2017.02.23 2094
167 [소스] PHP를 이용한 RSS 만들기 꿘쓰 2016.07.30 1410