사용자 선언 함수
다음과 같은 문법을 사용하여 함수를 선언한다:
예 12-1. 함수 사용을 설명하기 위한 가상 코드
<?php function foo ($arg_1, $arg_2, /* ..., */ $arg_n) { echo "예제 함수.\n"; return $retval; } ?>
|
|
모든 유효 PHP코드는 특정 함수 내에서 뿐만 아니라, 여러 다른 함수나
class정의 안에서도
나타날수있다.
PHP 3에서는 함수가 참조되기 전에 선언되어야 한다. 다음 두 예제 코드와
같이 함수가 조건적으로 선언되는 경우를 제외하고
PHP 4는 이런 제약이 없다.
아래 예제 코드와 같이 함수가 조건적으로 선언되면 그 함수가 호출되기
전에 함수를 선언해야 한다.
예 12-2. 조건적인 함수
<?php
$makefoo = true;
/* We can't call foo() from here since it doesn't exist yet, but we can call bar() */
bar();
if ($makefoo) { function foo () { echo "I don't exist until program execution reaches me.\n"; } }
/* Now we can safely call foo() since $makefoo evaluated to true */
if ($makefoo) foo();
function bar() { echo "I exist immediately upon program start.\n"; }
?>
|
|
예 12-3. 함수 안의 함수
<?php function foo() { function bar() { echo "foo()를 호출하기 전까지는 존재하지 않습니다.\n"; } }
/* bar()를 호출할 수 없습니다. 아직 존재하지 않습니다. */
foo();
/* 이제 bar()를 호출할 수 있습니다. foo()를 실행하여 접근할 수 있게 되었습니다. */
bar();
?>
|
|
PHP는 함수 오버로딩(overloading)을 지원하지 않으며, 함수 정의를
해제하거나 이미 선언된 함수를 다시 선언할수 없다.
참고:
함수명은 선언시에 그 함수를 호출하기 편하게 만들겠지만,
대소문자 구별을 하지 않는다.
PHP 3에서 함수는 기본 인자(default argument)를 지원되지만,
가변 인자 갯수(variable-length argument)를 지원하지 않는다. (자세한 정보는
기본 인자섹션을 참고).
PHP 4는 둘 다 지원된다: 자세한 정보는
가변 인자 목록섹션과
func_num_args(),
func_get_arg(),
func_get_args()함수 레퍼런스를 참고.