일부 시나리오에서는 효율적인 작업을 위해 클래스 메서드를 다른 함수에 대한 콜백으로 전달해야 할 수도 있습니다. 특정 작업의 실행. 이 글에서는 이를 달성하기 위한 다양한 메커니즘을 안내합니다.
함수를 콜백으로 전달하려면 해당 이름을 문자열로 직접 제공할 수 있습니다. 그러나 이 메서드는 클래스 메서드에는 적용되지 않습니다.
클래스 인스턴스 메서드는 객체가 첫 번째 요소이고 메서드 이름이 메서드 이름인 배열을 사용하여 콜백으로 전달될 수 있습니다. 두번째. 이 접근 방식은 동일한 클래스 내부와 외부 모두에서 작동합니다.
<code class="php">// 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']);</code>
정적 클래스 메서드에는 객체 인스턴스가 필요하지 않습니다. 클래스 이름과 메서드 이름을 포함하는 배열로 직접 전달할 수 있습니다.
<code class="php">// 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+</code>
언급된 메서드 외에도 익명 함수를 콜백으로 전달할 수도 있지만, 코드 구조를 수정해야 할 수도 있습니다.
위 내용은 클래스 메서드를 콜백으로 전달하는 방법: 메커니즘 및 기술 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!