반응형
Web Development · PHP User Function
PHP 사용자 정의 함수 —
매개변수 없는 가장 단순한 형태
코드 묶음에 이름을 붙여 재사용 가능하게 만들기
시작 오늘 분석할 코드
여러 페이지에서 똑같이 들어갈 저작권 표시(copyright)를 함수 하나로 묶어둔 코드다. 매개변수도 반환값도 없는 가장 단순한 사용자 정의 함수의 모양.
<?php function print_copyright(){ // 외부에서 print_copyright() 호출 시 출력되는 문구의 함수 print "<FONT size=2>"; print "Copyright 2013 여러분의 이름 All rights reserved."; print "</FONT>"; } print_copyright(); ?>
실제 출력 결과
Copyright 2013 여러분의 이름 All rights reserved.
용어 용어 정리
function사용자 정의 함수를 만드는 키워드
함수 이름호출 시 식별자 (영문 시작, _ 허용)
( )매개변수 자리 — 없어도 빈 괄호 필수
{ }함수의 본문 (실행될 코드 묶음)
호출함수 이름() 형태로 실행 명령
DRYDon't Repeat Yourself — 중복 제거 원칙
<FONT>옛 HTML 글자 스타일 태그 (사용 비권장)
반환값함수가 호출자에게 돌려주는 값 (이 함수는 없음)
1 왜 함수로 만드는가?
웹사이트의 푸터·헤더·저작권 안내처럼 여러 페이지에 똑같이 들어가는 코드는 매번 복사·붙여넣기 하면 문제가 생긴다.
예시 — 함수 없이 5개 페이지에 같은 저작권 코드 복사
· 연도가 바뀌면 5곳 모두 수정해야 함
· 한 곳만 빼먹으면 페이지마다 정보가 다름
· 코드 길이가 5배로 늘어남
· 연도가 바뀌면 5곳 모두 수정해야 함
· 한 곳만 빼먹으면 페이지마다 정보가 다름
· 코드 길이가 5배로 늘어남
함수로 묶어두면 한 곳만 고치면 모든 페이지에 자동 반영된다. 이걸 DRY 원칙(Don't Repeat Yourself)이라고 한다.
2 함수 선언 문법
function 이름() { // 실행할 코드 } function print_copyright() { // ↑ ↑ ↑ // 키워드 함수 이름 매개변수 없음 (빈 괄호)
| 구성 | 설명 | 이 코드 |
|---|---|---|
function |
"이제부터 함수를 정의한다" | 고정 키워드 |
| 이름 | 호출할 때 사용할 식별자 | print_copyright |
() |
매개변수 자리 (없어도 필수) | 빈 괄호 |
{ } |
본문 — 실행할 코드 묶음 | print 3줄 |
※ 매개변수가 없어도 괄호는 필수다.
function print_copyright {…}은 구문 오류.3 함수 호출 — print_copyright()
print_copyright(); // └┴─ 호출하라는 뜻 (괄호 없으면 호출 안 됨!)
함수 이름 뒤에 괄호를 붙여야 실행된다. 괄호 없이 print_copyright; 만 적으면 PHP는 그걸 상수 이름으로 해석해 경고를 낸다.
올바른 호출
print_copyright();함수가 실행됨
결과: 저작권 텍스트 출력
잘못된 호출
print_copyright;함수가 실행 안 됨
결과: 경고 + 아무것도 출력 안 됨
반응형
4 호출이 정의보다 위에 있어도 되나?
이 코드는 호출이 정의 뒤에 있다 (function 정의 → print_copyright()). 하지만 PHP는 다음도 허용한다.
// 호출이 먼저, 정의가 나중 — PHP는 OK print_copyright(); function print_copyright() { print "..."; }
※ PHP의 함수 호이스팅
- 전역 스코프에 직접 적은 함수는 파일 어디서든 호출 가능
- 조건문(
if) 안에서 정의된 함수는 그 조건이 실행된 뒤에만 호출 가능 - 가독성을 위해 보통 정의를 먼저 적는 게 관례
5 함수 본문에서 일어나는 일
1
function 키워드 만남PHP가 "이 이름의 함수가 있다"고 기억함 (아직 실행 안 함)
2
print_copyright() 호출함수의 시작 위치로 점프
3
print "<FONT size=2>""<FONT size=2>" 브라우저로 출력
4
print "Copyright 2013 ..."저작권 본문 출력
5
print "</FONT>"닫는 태그 출력
6
함수 본문 끝 (})호출했던 자리로 돌아옴
7
스크립트 종료?> 까지 진행 후 PHP 종료
6 매개변수가 있는 함수 vs 없는 함수
매개변수 없음 (이 코드)
function f() { ... }매번 똑같은 결과
예: 고정 저작권, 헤더 출력
매개변수 있음
function f($x) { ... }입력에 따라 다른 결과
예: 사용자별 인사말, 계산
이번 함수는 매번 똑같은 텍스트를 출력하므로 매개변수가 필요 없다. 만약 연도를 바꾸고 싶으면 매개변수를 받게 만들 수 있다.
// 발전 — 연도와 이름을 매개변수로 받기 function print_copyright($year = 2024, $name = "회사명") { print "<footer>"; print "Copyright {$year} {$name} All rights reserved."; print "</footer>"; } print_copyright(); // 기본값 print_copyright(2025, "내 블로그"); // 직접 지정
7 <FONT> 태그는 옛 방식 (한 단계 발전)
※ 원본 코드의
<FONT size=2>는 HTML 4 시절의 태그로, HTML5에서는 비표준이다. 동작은 하지만 CSS로 대체해야 한다.옛 방식 (FONT 태그)
<FONT size=2>
Copyright...
</FONT>구조와 스타일 섞임
현대 방식 (CSS)
<footer style="font-size:11px">
Copyright...
</footer>구조와 스타일 분리
FONT 외에도 CENTER, BIG, STRIKE 등은 모두 폐기된 태그. 현대에는 의미 태그(footer/section/article) + CSS 조합이 표준.
8 자주 하는 실수
| 실수 | 증상 | 해결 |
|---|---|---|
| 호출 시 괄호 누락 | 함수 실행 안 됨, 경고만 | 호출은 항상 이름() |
| 같은 이름 함수 두 번 정의 | "Cannot redeclare" 치명적 오류 | 한 번만 정의 (또는 require_once) |
| 함수 안에서 전역 변수 직접 사용 | undefined 경고 | 매개변수로 받거나 global 선언 |
| function 오타 (Function 등) | 구문 오류 | 모두 소문자 function |
| 출력 후 헤더 함수 호출 | "headers already sent" | 헤더 호출은 출력 전에 |
9 함수의 진짜 가치 — 의도가 드러난다
함수는 단순히 코드를 줄여주는 도구를 넘어 "이 코드가 무얼 하는지" 한 단어로 표현해 준다.
함수 없이
print "<FONT size=2>";print "Copyright...";print "</FONT>";→ 무얼 하는 코드인지 읽어봐야 앎
함수로
print_copyright();→ 한 줄만 봐도 의도 분명
→ 본문은 신경 쓰지 않아도 됨
함수 이름은 "무엇을 하는가"가 분명히 드러나도록 짓는다.
print_copyright처럼 동사로 시작하는 게 일반적.핵심 한 줄 요약
function 이름()사용자 정의 함수의 가장 단순한 형태
매개변수 없음빈 괄호 필수 — 매번 같은 결과
호출 = 이름()괄호가 있어야 실행, 없으면 무시
호이스팅호출이 정의보다 위에 있어도 PHP는 OK
DRY 원칙중복 코드를 함수로 묶어 한 곳만 수정
의도 표현함수 이름이 코드의 목적을 한 단어로 보여줌
FONT 태그HTML5 비표준 — CSS로 대체하는 게 현대 방식
반응형
'php' 카테고리의 다른 글
| PHP return + list — 배열 반환과 다중 변수 분해 완전 정리 (0) | 2026.06.13 |
|---|---|
| PHP return — 함수 결과 돌려주기 + strlen 바이트 검사 완전 정리 (0) | 2026.06.13 |
| PHP 변수 선언 + require — data.php의 외부 참조 패턴 완전 정리 (0) | 2026.06.13 |
| PHP 함수 기본값 매개변수 — 로그인 분기 완전 정리 (0) | 2026.06.13 |
| PHP 함수 매개변수와 변수 스코프 — 전역/지역/삼항 완전 정리 (1) | 2026.06.13 |
왕진 블로그

댓글