php子函数可以返回main函数吗?

时间:2016-05-20 12:57:10

标签: php function

例如

function main(){
     function sub(){
        $a = false;
        if(!$a) return main function;
     }
}

这样的事情是可能的,还是有类似的解决方案?

3 个答案:

答案 0 :(得分:1)

为什么不呢?但必须退出。

function main($exit = false){
    echo 'begin main' . '<br>';

    if ($exit) {
        echo 'exit main' . '<br>';
        return;
    }

    function sub(){
        echo 'sub' . '<br>';
        return main(true);
    }

    echo 'end main' . '<br>';
}

如果我们致电sub(),我们会收到致命错误 - sub()只会在调用main()时定义。

但是,如果我们先调用main()然后调用sub(),则sub将起作用:

main();
// begin main
// end main

sub();
// sub
// begin main
// exit main

答案 1 :(得分:1)

PHP没有&#34;子功能&#34;。你在这里有两个全局函数,但main()只会在调用Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference时定义.....之后,它们是完全独立的函数。

答案 2 :(得分:0)

main()必须从某个地方调用,所以你可以将调用包装成try-catch结构并使用异常退出内部函数:

try{
    main();
}catch(SubException $e){
    ...
}

function main(){
    function sub(){
        $a = false;
        if(!$a) throw new SubException(...);
     }
}