강좌
클라우드/리눅스에 관한 강좌입니다.
프로그램 분류

디. php 기초 -5 이정도는 알아야 한다.

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

[강좌] php+mysql 게시판 만들기 #디-4

안녕하세요. 디망쉬입니다.

 

icon04.gif 디. 기초 - e. 이정도는 알아야 한다.

별 거 없습니다. php 로 무언가를 만든다면, 아니 프로그래밍을 한다면 기본적으로 염두해야할 사항
몇 가지입니다.


# 이름을 신중히 짓자.

제가 무언가를 프로그래밍할 때 코딩하는 시간은 전체의 60% 이고 생각하는 시간은 40% 입니다.
생각하는 시가 40% 중 20%는 변수명, 함수명 등입니다.
-_-;

사실 이름 짓는 것 만큼 중요한 게 없습니다. 일단 이름 짓는데 기본 사항을 나열하보죠.

- 흔한 영어 단어를 쓰지 말자
- 해당 언어의 기본 함수명으로 쓰지 말자
- 규칙을 주자

이 내용은 기본입니다. 첫번째부터 보죠.
흔한 영어 단어를 쓰지 말자?
변수명으로 $total ,$count 이런 거 쓴다고 문제되지 않습니다.
하지만 웬만한 사람은 해당 언어의 모든 함수를 기억 못하는 것이 보통입니다.
특히 외부의 누군가가 만든 함수를 사용할 지도 모른다면 더더욱 피할 필요가 있습니다.
왜냐하면 흔히 생각할 수 있는 영단어 변수명은 다른 사람도 생각해내어 사용할 수도 있거나 언어 자체에서
이미 제공하는 것일 수 있으니까요.

그리고 해당 언어의 기본 함수資막?쓰지 말자는 이미 한 번 거론한 내용입니다.
php 에 echo 함수가 있습니다. 이걸 $echo 로 사용하면 안된다는 거죠. 에러는 안납니다.
(라고 어느 분께서 지적을. 캄샤 ^^) 하지만 결코 좋은 습관이 못되죠. 헷갈릴 수도 있고.

마지막으로 규칙을 주자는 변수명을 지을 때 통일된 규칙을 갖고 지으면 나중에 두고 두고 편하기 때문에 지킬 필요가 있습니다.

$total_num
$total_page

위 두 변수는 어떤 규칙을 갖고 있습니다. 변수명을 봐도 대충 어떻게 쓰일지 예상이 가죠.
$total_num 은 전체 갯수를, $total_page 는 전체 페이지 수를 저장할 변수로 예상됩니다. :]


# 주석을 많이 달자


소스 곳곳에 지저분할 정도만 아니라면 소스를 많이 붙여주는 것이 좋습니다.
아무리 변수명이나 사용자 정의 함수명을 잘 지었어도 그것은 결국 일종의 약어같은 형식이기 때문에 시간이 지난 후에는 변수가 어떤 역할을 하는지 몰라볼 수도 있습니다. (실제로 제가 자주 그랬어요. T_T)
굳이 변수명이나 함수명뿐 아니라 해당 알고리즘 부분은 별도의 주석을 달면 좋겠죠.

주석 어떻게 다냐구요?

단일행(줄)은 // 로 하면 됩니다.

// 에헤헤. 디망쉬는 귀여워


라고 하면 // 부터 나머지 뒷 부분은 주석이죠.


echo ("$total_page"); // 전체 페이지 출력


처럼 하면 보기도 좋고 쉽게 알아보겠죠?


또 다른 방법은 /* 과 */ 으로 묶어주는 겁니다.

/*
이것은 전체 페이지를 출력하는 부분이다.
$total_page 변수는 get_total() 이라는 직접 만든 함수를 통해 생성된다.

*/
echo ("$total_page");


어때요. $total_page 변수의 역할은 물론 어디서 생성된건지도 알 수가 있겠죠. 소스 전체를 읽지 않고도.

# 예외 처리를 확실히 해두자

서버 관리자들은 솔직히 CGI 를 열어두는 것을 원하지 않습니다. 왜냐하면 CGI 로 인한 보안 사고가 많이 생기거든요.
실제로 공개된 웹 게시판들 옛 버전을 보면 보안 문제로 긴급히 패치가 나오곤 했죠.

게시판 소스는 게시판의 기능과 개발자에 따라 다르지만 1000 줄에 육박하기 일쑤입니다.
제가 만든 pwb 1.0a 만 하더라도(공개 안됐심다. 걍 제가 관리하는 홈페이지에만 물려놨죠) 소스 줄이1400 줄에 육박합니다. (물론 주석이나 빈줄 포함)

아무튼 게시판 소스는 상당히 방대하기 때문에 예상하지도 못한 부분에서 문제가 발생됩니다.
CGI 를 이용하는 유저가 어떤 짓을 할지 모르기 때문이죠.
개발자는 이것을 최대한 염두하여 최대한 예외 처리를 하여야 합니다.

특히 게시판에는 if 문이 많이 나옵니다.
if 문은 제어문의 하나인데 만약 어떠어떠하면 이렇게 한다' 라고 명령을 내릴 수 있게 해줍니다. 예를 보죠.

if ($i == "1") {
$str = "디망쉬는 1번";
}

위 소스는 $i 변수의 값이 1 일 경우 $str 라는 변수에 디망쉬는 1번 이라는 문자열을 저장합니다.

위 소스는 예외 처리가 하나도 안되어 있습니다.
만약 $i 가 1이라면 $str 에 해당 문자열이 저장되겠지만 $i 가 1이 아닌 값이라면?
아무런 일을 수행할 필요가 없다면 문제가 안되지만 $str 변수에 의해 어떠한 중요한 기능이 정상적으로
작동되느냐 안되느냐가 걸려있다면 매우 중요한 문제죠.

그래서 개발자는 if 문을 사용하면 else 문을 가급적 함께 해주는 편이 좋습니다.
else 문은 if 문과 함께 사용되는 것으로서 '이외의 경우' 에 해당합니다. 위 소스를 수정하자면

if ($i == "1") {
$str = "디망쉬는 1번";
}
else {
$str = "디망쉬는 몇 번이더라";
}



로 할 수 있겠죠. $i 가 1이라면 $str 에는 디망쉬는 1번 이라는 문자열이 들어가겠고, $i 가 1이 아니라면(2일 수도 있고 -1 일 수도 있고) $str 에는 디망쉬는 몇 번이더라 라는 문자열이 저장되죠.

휴우 끝났습니다. 사실 '이정도는 알아야한다!' 부분에는 이전 회에서 다루지들 못한 if 문 같은 제어문, for 문
같은 반복문 같은 것을 다룰 계획이었습니다.
하지만 이런 것들은 앞으로 숱하게 만나겠지만 위의 내용은 이번 회가 아니면 다룰 기회가 없겠다 싶어서 내용을
긴급히 바꾸었습니다. ^^;

자. 다음 회는 드디어 제 2 편에 해당하는 '망' 편입니다.
여기서는 웹 게시판을 구상하죠.
게시판 디자인 및 콘티, 게시판 구조(db) 등을 다루는 겁니다.
실제로 게시판을 짜는 것 못지않게 중요한 부분이죠.
이런 초기 작업이 허술하면 나중에 게시판 소스 갈아엎고 새로 작성하는 사태가 벌어지며 그런 경우 숱하게 봤습니다. ^^;

좀 걱정되내요. 제 짧은 지식내에서 민감한 내용을 다룰 예정이라 저의 허접 독학 지식이 탄로나는 건 아닐까
하는. ^^; 에이 뭐 어때요.
전 단지 초보분들이 맨땅에 헤딩하지만 않으면 성공인데여 뭐. ^^;

그럼 다음 강좌에서 뵈요. 헥헥

----------------------------
함께하면 즐거운 사이트들 (-_-; 광고임 -_-;)
http://game.creple.com/delthia
http://creple.com
http://coco.st
----------------------------


- ?! 디망쉬

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,041 명
  • 현재 강좌수 :  35,855 개
  • 현재 접속자 :  148 명