Forum und email

함수

Table of Contents

사용자 선언 함수

다음과 같은 문법을 사용하여 함수를 선언한다:

Example#1 함수 사용을 설명하기 위한 가상 코드

<?php
function foo($arg_1$arg_2/* ..., */ $arg_n)
{
    echo 
"예제 함수.\n";
    return 
$retval;
}
?>

모든 유효 PHP코드는 특정 함수 내에서 뿐만 아니라, 여러 다른 함수나 class정의 안에서도 나타날수있다.

PHP 3에서는 함수가 참조되기 전에 선언되어야 한다. 다음 두 예제 코드와 같이 함수가 조건적으로 선언되는 경우를 제외하고 PHP 4부터는 이러한 제약이 없습니다.

아래 예제 코드와 같이 함수가 조건적으로 선언되면 그 함수가 호출되기 전에 함수를 선언해야 한다.

Example#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 ($makefoofoo();

function 
bar() 
{
  echo 
"I exist immediately upon program start.\n";
}

?>

Example#3 함수 안의 함수

<?php
function foo() 
{
  function 
bar() 
  {
    echo 
"foo()를 호출하기 전까지는 존재하지 않습니다.\n";
  }
}

/* bar()를 호출할 수 없습니다.
   아직 존재하지 않습니다. */

foo();

/* 이제 bar()를  호출할 수
   있습니다. foo()를 실행하여
   접근할 수 있게 되었습니다. */

bar();

?>

bar();

?>

PHP는 함수 오버로딩(overloading)을 지원하지 않으며, 함수 정의를 해제하거나 이미 선언된 함수를 다시 선언할수 없다.

Note: 함수명은 선언시에 그 함수를 호출하기 편하게 만들겠지만, 대소문자 구별을 하지 않는다.

PHP 3에서 함수는 기본 인자(default argument)를 지원되지만, 가변 인자 갯수(variable-length argument)를 지원하지 않는다. (자세한 정보는 기본 인자섹션을 참고). PHP 4부터는 둘 다 지원합니다: 자세한 정보는 가변 길이 인자 목록섹션과 func_num_args(), func_get_arg(), func_get_args()함수 레퍼런스를 참고.