PHP7은 익명 함수와 클로저의 두 가지 강력한 기능을 소개하여 코드의 유연성을 크게 향상시킵니다. Lambda 함수라고도하는 익명 함수는 변수에 할당하거나 매개 변수로 전달되거나 함수의 리턴 값으로 변수에 할당 할 수있는 이름없는 함수 코드 블록입니다. 클로저는 익명 함수와 외부 스코프 변수의 조합으로, 함수가 정의 될 때 범위에서 변수에 액세스하고 작동 할 수 있도록합니다.
익명 함수는 코드에서 직접 정의하고 호출 할 수 있습니다. 다음 예는 익명 기능을 작성하고 사용하는 방법을 보여줍니다.
$greet = function($name) {
echo "Hello, $name!";
};
$greet('John'); // 산출:Hello, John!
클로저를 사용하면 익명 함수가 정의 될 때 외부 변수에 액세스 할 수 있으며 일반적으로 사용 키워드의 도움으로 외부 변수로 전달됩니다. 예는 다음과 같습니다.
function createGreeting($name) {
return function() use ($name) {
echo "Hello, $name!";
};
}
$greet = createGreeting('John');
$greet(); // 산출:Hello, John!
익명 함수는 종종 Array_Map , Array_Filter 등과 같은 어레이 작동 함수에 사용됩니다. 다음 예제는 익명 함수를 통해 배열 요소를 두 배로 늘립니다.
$numbers = [1, 2, 3, 4, 5];
$double = array_map(function($num) {
return $num * 2;
}, $numbers);
print_r($double); // 산출:Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
클로저는 루프에서 가변 상태를 유지할 수 있으며 비동기 작업 또는 콜백 함수를 처리하는 데 적합합니다. 예는 다음과 같습니다.
$tasks = ['Task 1', 'Task 2', 'Task 3'];
$callbacks = [];
foreach ($tasks as $task) {
$callbacks[] = function() use ($task) {
echo "Processing $task...";
// 비동기 작업 처리 코드
};
}
foreach ($callbacks as $callback) {
$callback();
}
폐쇄 기능은 게으른 하중을 구현하는 데 사용될 수 있으며, 성능 및 리소스 활용 효율성을 향상시키는 데 필요한 경우에만 리소스가 초기화됩니다. 예를 들어, 데이터베이스 연결 생성 지연 :
function createDatabaseConnection() {
return function() {
// 데이터베이스 연결 초기화...
return $dbConnection;
};
}
$getConnection = createDatabaseConnection();
// 데이터베이스 연결을 사용할 때는 클로저를 호출하십시오
$db = $getConnection();
$sql = "SELECT * FROM users";
$result = $db->query($sql);
PHP7의 익명 기능 및 클로저는 개발자에게 유연하고 효율적인 프로그래밍 방법을 제공합니다. 코드 구조를 단순화 할뿐만 아니라 많은 복잡한 범위와 비동기 처리 문제를 해결합니다. 실제 개발에서 익명 기능과 폐쇄를 합리적으로 적용하면 코드의 가독성과 재사용 성을 향상시킬 수 있습니다. 그러나 코드가 명확하고 유지하기 쉬운 지 확인하려면 학대를 피해야합니다.