PHP 클로저 및 익명 함수는 일반 함수와 동일한 구문을 사용하지만 클로저 및 익명 함수는 실제로 함수로 위장한 객체(클로저 클래스의 인스턴스)입니다. PHP의 클로저와 익명 함수에 대한 지식을 소개하겠습니다. 클로저는 생성 시 주변 상태를 캡슐화하는 함수를 말합니다. 클로저가 위치한 환경이 더 이상 존재하지 않더라도 클로저에 캡슐화된 상태는 여전히 존재합니다.
익명함수는 이름이 없는 함수입니다. 익명 함수는 변수에 할당될 수 있으며 다른 PHP 객체처럼 전달될 수 있습니다. 그러나 익명 함수는 여전히 함수이므로 호출할 수 있고 매개변수를 전달할 수 있습니다. 익명 함수는 함수나 메서드에 대한 콜백으로 특히 적합합니다.
참고: 이론적으로 클로저와 익명 함수는 다른 개념입니다. 그러나 PHP는 이를 동일한 개념으로 취급합니다. 따라서 클로저를 언급할 때 익명 함수도 언급하고 그 반대의 경우도 마찬가지입니다.
PHP 클로저 및 익명 함수는 일반 함수와 동일한 구문을 사용하지만 클로저 및 익명 함수는 실제로 함수로 위장한 객체(클로저 클래스의 인스턴스)입니다.
클로저 만들기
$closure = function($name){ return sprintf("Hello %s", $name); } echo $closure("jerry"); // 检测$closure变量是否是一个闭包 var_dump($closure instanceof Closure);
위 코드는 클로저 객체를 생성한 다음 이를 $closure 변수에 할당합니다. 클로저는 일반 PHP 함수와 매우 유사하며 동일한 구문을 사용하고 매개변수를 수신하며 값을 반환할 수 있습니다.
설명: $closure 변수를 호출할 수 있는 이유는 이 변수의 값이 클로저이고 클로저 객체가 __invoke() 매직 메서드를 구현하기 때문입니다. 변수 이름 뒤에 ()가 있으면 PHP는 __invoke()
메서드를 찾아 호출합니다.
__invoke()
方法。
使用闭包
我们通常把PHP闭包当做当做函数和方法的回调使用。很多PHP函数都会用到回调函数,例如 array_map()
和 preg_replace_callback()
array_map()
및 preg_replace_callback()
과 같은 콜백 함수를 사용합니다. 다음 예에서는 array_map()을 사용하여 배열을 처리하고 각 항목을 자동으로 교체합니다. 추가된 항목 1: $nubmers = array_map(function($number){
return $number++;
}, [1,2,3]);
var_dump($numbers);
PHP 클로저는 실제 javascrypt 클로저처럼 애플리케이션 상태를 자동으로 캡슐화하지 않습니다. 클로저 개체의 binTo() 메서드를 수동으로 호출해야 합니다. 또는 use use 키워드는 상태를 PHP 클로저에 연결합니다.
use 키워드 사용 클로저 상태를 첨부하기 위해 use 키워드를 사용하는 것이 더 일반적이므로 먼저 이 방법을 살펴보겠습니다. use 키워드를 사용하여 클로저에 변수를 연결하면 연결된 변수는 연결될 때 할당된 값을 기억합니다.function Car ($name){ return function($statu)use($name){ return sprintf("Car %s is %s", $name, $statu); } } // 将车名封装在闭包中 $car = Car("bmw"); // 调用车的动作 // 输出--> "bmw is running" echo $car("running");참고: 여러 매개변수를 클로저에 전달하려면 use 키워드를 사용하세요. 이 경우 PHP 함수나 메서드의 매개변수처럼 여러 매개변수를 구분하려면 쉼표를 사용하세요. 클로저 상태를 연결하려면 바인딩To() 메서드를 사용하세요. 다른 PHP 객체와 마찬가지로 각 클로저 인스턴스는 $this 키워드를 사용하여 클로저의 내부 상태를 얻을 수 있습니다. 클로저 객체의 기본 상태는 쓸모가 없지만 __invoke() 매직 메서드와 binTo() 메서드가 있습니다. bindTo() 메서드는 클로저에 몇 가지 흥미로운 잠재력을 추가합니다. 이 메서드를 사용하여 Closure 객체의 내부 상태를 다른 객체에 바인딩할 수 있습니다. bindTo() 메소드의 두 번째 매개변수는 바인딩 클로저의 객체가 속하는 PHP 클래스를 지정하는 것입니다. 따라서 클로저는 클로저가 바인딩된 객체의 보호된 멤버 변수와 전용 멤버 변수에 액세스할 수 있습니다.
class TestClosure
{
private $name=[];
private $age;
private $sex;
public function addPerson($name, $personCallback){
// 将闭包对象绑定当前实例
$this->name[$name] = $personCallback->bindTo($this, __CLASS__);
}
public function display($name){
foreach ($this->name as $key => $callback){
if($key == $name){
// 执行闭包对象,将闭包状态附加到类
$callback();
}
}
echo "name : {$name}\n";
echo "age : {$this->age}\n";
echo "sex : {$this->sex}\n";
}
}
$person = new TestClosure();
$person->addPerson("jerry", function(){
$this->age = 19;
$this->sex = "man";
});
$person->display("jerry");
/** output
name : jerry
age : 19
sex : man
*/
당신이 관심을 가질 만한 기사:
Laravel이 동일한 큐 작업을 반복적으로 실행하는 이유에 대한 소스 코드 분석 및 설명
Laravel Redis에서 동시에 큐를 사용하는 여러 프로세스의 문제에 대한 자세한 설명
php-msf 소스코드에 대한 자세한 설명
🎜🎜🎜🎜🎜
위 내용은 PHP의 클로저 및 익명 함수에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

tomodifyDatainAphPessess, startSessionstession_start (), 그런 다음 $ _sessionToset, modify, orremovevariables.

배열은 PHP 세션에 저장할 수 있습니다. 1. 세션을 시작하고 session_start ()를 사용하십시오. 2. 배열을 만들고 $ _session에 저장하십시오. 3. $ _session을 통해 배열을 검색하십시오. 4. 세션 데이터를 최적화하여 성능을 향상시킵니다.

PHP 세션 쓰레기 수집은 만료 된 세션 데이터를 정리하기위한 확률 메커니즘을 통해 트리거됩니다. 1) 구성 파일에서 트리거 확률 및 세션 수명주기를 설정합니다. 2) CRON 작업을 사용하여 고재 응용 프로그램을 최적화 할 수 있습니다. 3) 데이터 손실을 피하기 위해 쓰레기 수집 빈도 및 성능의 균형을 맞춰야합니다.

PHP의 사용자 세션 활동 추적은 세션 관리를 통해 구현됩니다. 1) Session_start ()를 사용하여 세션을 시작하십시오. 2) $ _session 배열을 통해 데이터를 저장하고 액세스하십시오. 3) 세션 _destroy ()를 호출하여 세션을 종료합니다. 세션 추적은 사용자 행동 분석, 보안 모니터링 및 성능 최적화에 사용됩니다.

데이터베이스를 사용하여 PHP 세션 데이터를 저장하면 성능 및 확장 성을 향상시킬 수 있습니다. 1) 세션 데이터를 저장하기 위해 MySQL 구성 : php.ini 또는 php 코드에서 세션 프로세서를 설정하십시오. 2) 사용자 정의 세션 프로세서 구현 : 데이터베이스와 상호 작용하기 위해 열린, 닫기, 읽기, 쓰기 및 기타 기능을 정의합니다. 3) 최적화 및 모범 사례 : 인덱싱, 캐싱, 데이터 압축 및 분산 스토리지를 사용하여 성능을 향상시킵니다.

phpsessionstrackuserdataacrossmultiplepagerequestsususingauniqueIdStoredInAcookie.here'showtomanagetheMeftically : 1) STARTASESSIONSTART_START () andSTAREDATAIN $ _SESSION.2) RegenerATERATESSESSIDIDAFTERLOGINWITHSESSION_RATERATERATES (True) TopreventSES

PHP에서 세션 데이터를 통한 반복은 다음 단계를 통해 달성 할 수 있습니다. 1. Session_start ()를 사용하여 세션을 시작하십시오. 2. $ _session 배열의 모든 키 값 쌍을 통해 Foreach 루프를 통과합니다. 3. 복잡한 데이터 구조를 처리 할 때 is_array () 또는 is_object () 함수를 사용하고 print_r ()를 사용하여 자세한 정보를 출력하십시오. 4. Traversal을 최적화 할 때 페이징을 사용하여 한 번에 많은 양의 데이터를 처리하지 않도록 할 수 있습니다. 이를 통해 실제 프로젝트에서 PHP 세션 데이터를보다 효율적으로 관리하고 사용하는 데 도움이됩니다.

이 세션은 서버 측 상태 관리 메커니즘을 통해 사용자 인증을 인식합니다. 1) 세션 생성 및 고유 ID의 세션 생성, 2) ID는 쿠키를 통해 전달됩니다. 3) ID를 통해 서버 저장 및 세션 데이터에 액세스합니다. 4) 사용자 인증 및 상태 관리가 실현되어 응용 프로그램 보안 및 사용자 경험이 향상됩니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

WebStorm Mac 버전
유용한 JavaScript 개발 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구
