"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 클래스 메서드를 콜백으로 전달하는 방법: 메커니즘 및 기술 이해

클래스 메서드를 콜백으로 전달하는 방법: 메커니즘 및 기술 이해

2024-11-06에 게시됨
검색:637

How to Pass Class Methods as Callbacks: Understanding Mechanisms and Techniques

클래스 메서드를 콜백으로 전달하는 방법

배경

일부 시나리오에서는 효율적인 작업을 위해 클래스 메서드를 다른 함수에 대한 콜백으로 전달해야 할 수도 있습니다. 특정 작업의 실행. 이 문서에서는 이를 달성하기 위한 다양한 메커니즘을 안내합니다.

호출 가능 구문 사용

함수를 콜백으로 전달하려면 해당 이름을 문자열로 직접 제공할 수 있습니다. 그러나 이 메서드는 클래스 메서드에는 적용되지 않습니다.

인스턴스 메서드 전달

클래스 인스턴스 메서드는 객체가 첫 번째 요소이고 메서드 이름이 요소인 배열을 사용하여 콜백으로 전달될 수 있습니다. 두번째. 이 접근 방식은 동일한 클래스 내부와 외부 모두에서 작동합니다.

// Inside the same class
$this->processSomething([$this, 'myCallback']);
$this->processSomething([$this, 'myStaticCallback']);

// Outside the same class
$myObject->processSomething([new MyClass(), 'myCallback']);
$myObject->processSomething([new MyClass(), 'myStaticCallback']);

정적 클래스 메서드 전달

정적 클래스 메서드에는 개체 인스턴스가 필요하지 않습니다. 클래스 이름과 메서드 이름을 포함하는 배열로 직접 전달할 수 있습니다.

// Inside the same class
$this->processSomething([__CLASS__, 'myStaticCallback']);

// Outside the same class
$myObject->processSomething(['\Namespace\MyClass', 'myStaticCallback']);
$myObject->processSomething(['\Namespace\MyClass::myStaticCallback']); // PHP 5.2.3 
$myObject->processSomething([MyClass::class, 'myStaticCallback']); // PHP 5.5.0 

추가 옵션

언급된 메서드 외에도 익명 함수를 콜백으로 전달할 수도 있지만 이 경우 코드 구조를 수정해야 할 수도 있습니다.

릴리스 선언문 이 글은 1729345515에서 재인쇄되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3