开发者

content not dying

I have a function, where if a variable is not defined, exit; is called, therefor it should not produce anything on the page but a blank page. it produces an error message right before it is exited actua开发者_Python百科lly. so when its supposed to execute, because the variable is not defined, it should die, but what happens is the error message is executed, then the rest of the page loads under the error message, and does not exit. any ideas?

public function exit_error() {
    parent::error_array();
    $errors = $this->msg_array;
    return $errors;
    die(); // error should produce, then die here.
}


You're returning from your function before your code reaches exit. This is what return does. Everything after the return statement is ignored, and the flow of execution returns to the point at which you called the function.

Read more about return and program flow here. it's a basic concept and understanding it is vital if you hope to write even the simplest programs.


With this line:

return $errors;

the function exits and returns the result to the caller.
Anything that comes after the return statement is never executed!

You can think about return as letting the function say: "Here take this, I am finished here!".


Because of this it is possible to have multiple return statements in a function e.g :

function($i) {
   if($i > 0) {
       return 'foo';
   }
   $i = -$i;
   return 'bar';
}

The function is nonsense, the point is that if $i is larger then 0, the statement return 'foo' is reached, the function exists and never executes the following lines.

With this you can leave a function early without doing further computations that might not be necessary.


By using return, you are basically exiting out of your function. Any subsequent statements are ignored, including die().

Oh, and save a unicorn and use exit() instead ;). (This is a joke, die() is equivalent to exit() in PHP)


the funciton is returning the variable $errors and then no more of the code within the function is executed.

    public function exit_error() {
        parent::error_array();
        $errors = $this->msg_array;
        return $errors;
        echo "hello";
        die();
    }

Hello will never be printed because the function has stopped executing.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜