16.7.4 클로저 상태 등록

클로저를 사용하는 목적은 호출하는 익명 함수의 상태를 감지하기 위해서입니다. 클로저로 상태를 감지하기 위해서는 use 키워드를 이용하여 수동으로 감지하고자 하는 상태를 등록해야 합니다.

예제파일 : closure-02.php

<?php
// 함수를 선언합니다.
// memCustomer() 함수는 클로저(익명 함수)를 반환합니다. 
function memCustomer($name){

	// $name 변수를 둘러싼 클로저를 반환합니다.
	return function ($doCommand) use ($name){
	return echo “name=” . $name . “, Command=” . $doCommand;
}

}

// 함수의 인자 값으로 “hojin”을 전달합니다.
// 리턴으로 클로저 인스턴스를 반환받습니다.
$clousreTest = memCustomer(“hojin”);

// 클로저 익명 함수를 호출합니다.
echo $clousreTest(“jiny”); 
?>

결과

name = hojin , command = jiny

위의 예제를 보면 클로저를 리턴하는 함수를 하나 선언합니다. 함수를 호출함으로써 $clousreTest 변수에는 클로저 인스턴스를 받게 됩니다. 이때, 함수는 종료하지만 use 키워드로 입력받은 $name 매개변수를 계속 가지고 있습니다.

클로저 변수는 반환받은 익명 함수 값을 호출하게 됩니다. 익명 함수는 이전에 계속 갖고 있는 $name 값과 익명 함수의 인자 입력 값 두 개를 출력합니다.