PHP 익명 함수(폐쇄 함수)상세 설명
php 클 로 징 은 PHP 5.3 버 전 이후 에 만 가능 합 니 다.
폐쇄 란 무엇 입 니까?패 킷 을 닫 는 것 은 자유(특정 대상 에 연결 되 지 않 음)변 수 를 포함 할 수 있 는 코드 블록 입 니 다.이러한 변 수 는 이 코드 블록 이나 모든 전역 컨 텍스트 에서 정의 되 는 것 이 아니 라 코드 블록 을 정의 하 는 환경 에서 정의 되 는 것 입 니 다(부분 변수)."패키지'라 는 단 어 는 다음 과 같은 두 가지 결합 에서 유래 한다.실행 할 코드 블록(자유 변수 가 코드 블록 에 포함 되 어 있 기 때문에 이러한 자유 변수 와 인용 대상 이 방출 되 지 않 았 다)과 자유 변수 에 연 결 된 계산 환경(역할 영역)을 제공한다.프로 그래 밍 분야 에서 우 리 는 쉽게 말 할 수 있다.서브 함 수 는 부모 함수 중의 국부 변 수 를 사용 할 수 있 는데 이런 행 위 를 폐쇄 라 고 한다.
PHP 익명 함수 와 패 킷 을 닫 는 데 사용 되 는 문법 은 일반 함수 와 같 지만 익명 편지 와 패 킷 수 는 함수 로 위장 한 대상 입 니 다.
익명 함수:이름 이 없 는 함수 입 니 다.익명 함 수 는 변수,대상 에 게 값 을 부여 할 수 있 습 니 다.그러나 익명 함 수 는 함수 이기 때문에 호출 할 수 있 고 매개 변수 도 들 어 갈 수 있 습 니 다.익명 함 수 는 함수 나 방법의 반전 으로 특히 적합 합 니 다.
패 킷 닫 기:생 성 할 때 주변 상 태 를 패키지 하 는 함 수 를 말 합 니 다.패 킷 이 있 는 환경 이 존재 하지 않 더 라 도 패 킷 에 포 장 된 상 태 는 존재 합 니 다.
주의:이론 적 으로 폐쇄 와 익명 함 수 는 서로 다른 개념 입 니 다.그러나 PHP 는 이 를 같은 개념 으로 간주 합 니 다.
패 킷 을 닫 는 문법 은 상당히 간단 하 다.주의해 야 할 키 워드 는 use 뿐 이 고 use 는 패 킷 과 외부 변 수 를 연결 하 는 것 이다.
$a = function() use($b) {
//TO-DO
};
다음은 폐쇄 를 실현 하 는 몇 가지 예 를 드 리 겠 습 니 다.
// : ,
function callFunc( $func ) {
$func( "some string\r
" );
}
$printStrFunc = function( $str ) {
echo $str;
};
// : 。 js,
callFunc( $printStrFunc );
callFunc( function( $str ) {
echo $str;
} );
// : :USE
function getMoney() {
$rmb = 1;
$dollar = 6;
$func = function() use ( $rmb ) {
echo $rmb;
echo $dollar;
};
$func();
}
getMoney();
// :1
// , dorllar
// :
function getMoney() {
$rmb = 1;
$func = function() use ( &$rmb ) {
echo $rmb . "<br>";
// $rmb 1
$rmb++;
};
$func();
echo $rmb;
}
getMoney();
// :
//1
//2
폐쇄 는 문법 과 실현 이 매우 간단 하지만 잘 쓰 기 는 쉽 지 않다.잘 쓰 면 우 리 를 도 울 수 있다.
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.더 많은 내용 을 알 고 싶다 면 아래 링크 를 보 세 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.