메서드가 콜백 메서드를 매개변수로 받아들여야 하는 경우 다음과 같이 작성할 수 있습니다.
<?php function dosth($callback){ call_user_func($callback); } function callback(){ echo 'do sth callback'; } dosth('callback'); ?>
출력:
do sth callback
그러나 콜백 메소드가 호출될 수 있는지 여부를 확신할 수 없기 때문에 콜백 메소드가 호출될 수 있는지 확인하기 위해 추가적인 작업을 많이 해야 합니다.
콜백 메서드가 호출 가능한지 확인하는 더 좋은 방법이 있나요?
callable을 사용하여 매개변수를 콜백 유형으로 강제 설정할 수 있으며, 이를 통해 콜백 메소드가 호출 가능해야 합니다.
예를 들어 콜백 메서드가 존재하지 않는 메서드입니다.
<?php function dosth(callable $callback){ call_user_func($callback); } dosth('abc'); ?>
실행 후 오류 메시지가 표시됩니다. TypeError: dosth()에 전달된 인수 1은 호출 가능해야 합니다.
프로그램에서 dosth의 내부 처리를 실행할 수 없습니다. 매개변수 유형을 확인하고 보호 처리했습니다.
실행 후 콜러블이 제거되면
<?php function dosth($callback){ call_user_func($callback); } dosth('abc'); ?>
경고가 표시됩니다. 경고: call_user_func()에서는 매개변수 1이 유효한 콜백일 것으로 예상합니다. 'abc'를 찾을 수 없거나 함수 이름이 잘못되었습니다
프로그램에서 dosth의 내부 처리를 실행할 수 있으므로 이 콜백 메서드를 호출할 수 있는지 확인하려면 추가 작업이 많이 필요합니다.
따라서 메소드의 매개변수가 콜백 메소드인 경우 callable을 추가하여 강제로 콜백 유형으로 지정해야 호출 오류를 줄이고 프로그램 품질을 향상시킬 수 있습니다.
위는 PHP Callable에서 콜백 유형을 강제로 지정하기 위해 에디터가 소개하는 방법입니다. 궁금한 점이 있으면 메시지를 남겨주세요. 시간 내에 답변해 드리겠습니다. 또한 PHP 중국어 웹사이트를 지원해 주신 모든 분들께 감사드립니다!
PHP Callable이 콜백 유형을 강제로 지정하는 방법에 대한 자세한 내용은 PHP 중국어 웹사이트를 참조하세요!