내부 기능에서 외부 기능을 종료할 수 있는 방법이 있습니까?
PHP 내에서 다른 기능을 호출하는 기능이 하나 있다면 전체 스크립트를 죽이지 않고 호출된 기능이 호출자 기능에서 종료되도록 할 수 있는 방법이 있습니까?
예를 들어, 제가 다음과 같은 코드를 가지고 있다고 가정해 보겠습니다.
<?php
function funcA() {
funcB();
echo 'Hello, we finished funcB';
}
function funcB() {
echo 'This is funcB';
}
?>
<p>This is some text. After this text, I'm going to call funcA.</p>
<p><?php funcA(); ?></p>
<p>This is more text after funcA ran.</p>
안타깝게도 funcB 안에서 funcA가 끝나지 않게 하고 싶은 무언가를 발견하면 전체 PHP 스크립트를 종료해야 할 것 같습니다.이 일을 해결할 방법이 없을까요?
funcB()의 결과를 확인하기 위해 funcA()에 무엇인가를 쓸 수 있다는 것을 알고 있지만, 저의 경우 funcA()의 내용에 대한 통제권이 없고 funcB()의 내용에 대한 통제권만 있습니다.
이 예를 좀 더 구체적으로 설명하자면, 저는 이 예에서 워드프레스와 함께 일하고 있습니다.나는 get_template_part() 함수에 후크를 걸며, 내 후크가 실행된 후 호출되는 locate_template() 함수를 통해 워드프레스가 실제로 파일을 요구/포함하는 것을 막으려고 합니다.
조언해 주실 분 계신가요?
예외 입력funcB
그것은 처리되지 않습니다.funcA
<?php
function funcA() {
try
{
funcB();
echo 'Hello, we finished funcB';
}
catch (Exception $e)
{
//Do something if funcB causes an error, or just swallow the exception
}
}
function funcB() {
echo 'This is funcB';
//if you want to leave funcB and stop funcA doing anything else, just
//do something like:
throw new Exception('Bang!');
}
?>
제가 볼 수 있는 유일한 방법은 예외를 사용하는 것입니다.
function funcA() {
funcB();
echo 'Hello, we finished funcB';
}
function funcB() {
throw new Exception;
echo 'This is funcB';
}
?>
<p>This is some text. After this text, I'm going to call funcA.</p>
<p><?php try { funcA(); } catch (Exception $e) {} ?></p>
<p>This is more text after funcA ran.</p>
못생겼지만 PHP5에서 작동합니다.
어쩌면...
해결책은 아니지만 exit()에서 "register_shutdown_function('shutdown';)"을 요청할 때 호출되는 다른 함수를 후크할 수 있습니다.그리고 어떻게든 이 일을 다시 계속하게 하거나 당신의 만족을 만족시킬 수 있게 하는 것입니다.
<?php
function shutdown()
{
// This is our shutdown function, in
// here we can do any last operations
// before the script is complete.
echo 'Script executed with success', PHP_EOL;
}
register_shutdown_function('shutdown');
?>
언급URL : https://stackoverflow.com/questions/5747411/any-way-to-exit-outer-function-from-within-inner-function
'source' 카테고리의 다른 글
내 진행률 표시줄의 Excel vba 사용자 양식에서 닫기 [X] 버튼 숨기기 (0) | 2023.10.24 |
---|---|
java.sql 푸는 방법SQL 비일시적 연결예외:결과 집합을 읽을 수 없습니다.연결 재설정? (0) | 2023.10.24 |
Emacs에서 XML 파일을 예쁘게 인쇄 (0) | 2023.10.24 |
jquery에서 이 날짜에서 1주일을 빼려면 어떻게 해야 합니까? (0) | 2023.10.24 |
AngularJS 및 그 이상의 웹소켓 (0) | 2023.10.24 |