웹마스터 팁

이번 시간을 마지막으로 PHP 기초 문법에 대해서 끝내려고 합니다. 겨우 6번의 강좌 내용으로 기초 문법이 끝난 것은 아닙니다. 그러나 이 강좌(학습)의 주제가 PHP 게시판 프로젝트인만큼 실제 PHP 게시판을 만드는 실전을 통해 여러 문법과 함수, 기타 PHP 프로그래밍 방식 등에 대해 하나하나 알아나가도록 하겠습니다.
이번 시간에는 PHP에서 제공하는 기본 함수가 아닌 프로그래머가 만들 수 있는 사용자 정의 함수에 대해 알아보기로 하겠습니다.

PHP의 사용자 정의 함수는 다음과 같이 구성됩니다.

function 함수명(인자1, 인자2, ...) {
        명령문
        return 변수 ;
}

■ 함수명은 영문을 사용합니다.
■ 인자가 필요없을 때는 괄호 안의 인자를 생략해도 됩니다.
■ 마찬가지로 return할 변수가 필요없을 때는 return 문은 생략해도 됩니다.
프로그래밍이 완전히 처음이신 분은 이해하기 좀 힘드실 겁니다. 비주얼베이직이나 C언어 같은 것을 아주 조금이라도 다뤄보신 분은 금방 이해가 됩니다. 심지어 그냥 베이직이라도 다루어보신 분이라면 이해가 쉽겠죠.(근데 도스에서 돌아가는 BASIC이 언제적 얘기지?)

먼저 다음과 같은 my_age()라는 함수를 하나 만들어 실행해 봅시다.

1: <?
2: function my_age($birth) {
3:         return 2002 - $birth ;
4: }
5:
6: $age = my_age(1980) ;
7: echo "나이는 만 $age 세 입니다.";
8: ?>

2행을 보면 my_age라는 함수의 인자로 $birth가 사용되었습니다.
3행을 보면 2002에서 $birth를 뺀 값을 리턴해주는 것을 알 수 있습니다.
이상이 my_age라는 사용자 정의 함수였고,
6행에서 my_age 함수를 실행하는데 인자로 1980을 넘겼습니다. 따라서 위의 3행에서와 같이 2002에서 1980을 뺀 값이 다시 되돌아 오겠죠. 이렇게 되돌아 온 값은 $age에 저장됩니다.
7행에서 $age를 출력하고 있습니다.

참, 사용자 정의 함수는 반드시 그 함수를 사용하기 전에 만들어 두어야 합니다. 꼭!

다음 예제는 여러 개의 값을 리턴할 때 사용하는 방식입니다. 리턴할 때는 배열로 리턴하고 받을 때는 list 함수를 사용해서 받아야 합니다. 이해가 안되시더라도 'array를 이용해 배열로 리턴하고 받을 때는 list 함수를 사용해서 받는다'라고만 알아두시면 됩니다. (자주 사용하면 그냥 익히게 됩니다.)

1: <?
2: function my_age($birthyear) {
3:         $re_age = 2002 - $birthyear ;
4:         return array(2002, $re_age) ;
5: }
6:
7: list($year, $age) = my_age(1975);
8: echo "$year 기준 만 $age 세 입니다";
9: ?>

4행을 보면 2개의 값을 리턴합니다.
PHP에서는 원칙적으로 하나의 값만 리턴하게 되어 있습니다. 따라서 2개 이상의 값을 리턴하려면 배열 함수인 array()를 사용해 배열을 통째로 넘겨야 합니다.
그리고 받을 때는,
7행에서와 같이 list 함수를 써서 받습니다. list 함수는 각각의 변수를 마치 배열처럼 만듭니다.
(이해가 안되시면 위의 예제를 그냥 외워버리세요.^^)

다음 실습은 함수의 인자에 기본 값을 지정하는 예입니다.

1: <?
2: function my_age($year = 1980) {
3:         return 2002 - $year ;
4: }
5:
6: $age1 = my_age();
7: $age2 = my_age(1975);
8: echo "처음 $age1, 나중 $age2" ;
9: ?>

2행을 보면 $year라는 변수에 기본 값으로 1980을 지정해 놓고 있습니다. 그러면,
6행에서와 같이 인자를 쓰지 않고 그냥 함수명만 호출하면 이 함수는 기본적으로 인자를 1980으로 전제하고 계산을 한 다음 그 결과를 리턴합니다.
7행에서와 같이 1975라는 인자를 사용하면 기존의 기본 값은 무시하고 실제로 넘어온 값(1975)를 가지고 처리합니다.

프로그래밍 초보자 입장에서 보자면 오늘 내용은 이전에 비해 어렵습니다. 비록 본문 내용은 짧지만 충분히 설명되지 못한 부분도 있습니다. 그러나 앞으로 설명의 수준은 이 정도로 하고자 합니다. 너무 자세하게 설명할 수도 없는 것이, 만약 그렇게 한다면 PHP 게시판 하나 만들다가 1년이 다 가버릴 수도 있기 때문입니다. 이 점 널리 양해하시길 바랍니다.

PHP 기초 문법에 대해서는 이것으로 마감합니다.
드디어 다음 시간부터 실전 프로그래밍에 돌입하겠습니다.

추적추적 비 내리는 새벽에,
동주 아빠 손병목이었습니다.
제목 글쓴이 날짜
[동주아빠] PHP 게시판(16강) - 입력 글 DB 저장(2) [4] 손병목 2002.12.25
[동주아빠] PHP 게시판(15강) - 입력 글 DB 저장(1) [2] 손병목 2002.12.25
[동주아빠] PHP 게시판(15강) - 입력 글 DB 저장(1) [3] 손병목 2002.12.25
[동주아빠] PHP 게시판(14강) - 게시판용 테이블 만들기 [3] 손병목 2002.12.25
[동주아빠] PHP 게시판 - 글쓰기 입력 write.php [5] file 손병목 2002.12.25
웹폰트 그딴거 난 몰라! TTF가 폰트 파일인건 알아! ^.^ [3] 아이쿠 2002.12.25
[동주아빠] PHP 게시판 - 글쓰기 입력폼(3) 입력값검사 [5] 손병목 2002.12.25
[동주아빠] PHP 게시판 - 글쓰기 입력폼(2) [1] 손병목 2002.12.25
[동주아빠] PHP 게시판 - 글쓰기 입력폼(1) FORM 태그의 이해(上) [8] 손병목 2002.12.25
[동주아빠] PHP 게시판 만들기 기초 (8) 초간단 카운터 만들기 [2] 손병목 2002.12.25
[동주아빠] PHP 게시판 만들기 기초 (7) 사용자정의함수 [4] 손병목 2002.12.25
[동주아빠] PHP 게시판 만들기 기초 (6) require,include [5] 손병목 2002.12.25
[동주아빠] PHP 게시판 만들기 기초 (5) 제어문(下) [10] 손병목 2002.12.25
[동주아빠] PHP 게시판 만들기 기초 (5) 제어문(上) [9] 손병목 2002.12.25
[동주아빠] PHP 게시판 만들기 기초 (4) 연산자 [10] 손병목 2002.12.25
[동주아빠] PHP 게시판 만들기 기초 (3) 변수와 배열 [6] 손병목 2002.12.25
[동주아빠] PHP 게시판 만들기 기초 (2) [12] 손병목 2002.12.25
[동주아빠] PHP 게시판 만들기 기초 (1) 준비 [8] 손병목 2002.12.25
if 문으로 xxx.php?db=src 이런식으로 해보자..(제1탄 기초를 확!) [14] inging-zb41 2002.12.12
왕초보용 개판 오분전 황당 쿠키(4) [2] 미친개 2002.12.09