содержание не умирает - PullRequest
0 голосов
/ 01 апреля 2010

У меня есть функция, где, если переменная не определена, вызывается exit;, поэтому она не должна создавать ничего на странице, кроме пустой страницы. оно выдает сообщение об ошибке прямо перед тем, как оно действительно завершается. поэтому, когда он должен исполниться, поскольку переменная не определена, он должен умереть, но в результате возникает сообщение об ошибке, остальная часть страницы загружается под сообщением об ошибке и не завершается. есть идеи?

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

Ответы [ 4 ]

1 голос
/ 01 апреля 2010

Вы возвращаетесь из своей функции до того, как ваш код достигнет exit. Это то, что делает return. Все после оператора return игнорируется, и поток выполнения возвращается к точке, в которой вы вызвали функцию.

Подробнее о возврате и потоке программы здесь . это базовая концепция, и понимание ее жизненно важно, если вы надеетесь написать даже самые простые программы.

0 голосов
/ 01 апреля 2010

функция возвращает переменную $errors, после чего код внутри функции больше не выполняется.

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

Привет никогда не будет напечатан, потому что функция перестала выполняться.

0 голосов
/ 01 апреля 2010

Используя return, вы в основном выходите из своей функции. Любые последующие утверждения игнорируются, включая die().

Да, спаси единорога и используй вместо него exit();). (Это шутка, die() эквивалентно exit() в PHP)

0 голосов
/ 01 апреля 2010

С этой строкой:

return $errors;

функция завершается и возвращает результат вызывающей стороне.
Все, что идет после оператора return, никогда не выполняется!

Вы можете думать о return как о том, что функция говорит: «Вот, возьми это, я закончил!» .


Из-за этого можно иметь несколько операторов возврата в функции, например:

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

Функция бессмысленная, дело в том, что если $i больше, чем 0, оператор return 'foo' достигнут, функция существует и никогда не выполняет следующие строки.

При этом вы можете рано покинуть функцию, не выполняя дальнейших вычислений, которые могут не потребоваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...