Выполнить возврат как функцию вызова - PullRequest
0 голосов
/ 23 апреля 2019

Есть ли способ выполнить оператор return в качестве вызывающей функции? Возьмите:

index.php:

require action.php

action.php:

require check.php
checkAccess() || return;
doSomeSecretStuff();

check.php:

function checkAccess() {
    if(loggedIn)
        return true;
    return false;
}

и мне было интересно, есть ли способ выполнить этот оператор return, заставляющий action.php остановиться изнутри checkAccess()?

вроде как get_function_caller().eval("return");

(супер-псевдокод)

1 Ответ

0 голосов
/ 24 апреля 2019

Если у вас есть это:

check();
foo();

Не существует способа , который check мог бы return для вас, так что гарантировано , что foo будет выполнено. И это хорошо, иначе у вас не будет никаких гарантий относительно вашего потока выполнения в вашем коде.

Единственный способ, которым это может пропустить выполнение foo, - это если фатальная ошибка произошла в check и все останавливается, или - и вот оно - если check выдает исключение .

Вы бы использовали это примерно так:

let foo = false;

function assertFoo() {
  if (!foo) {
    throw new Error('Not enough foo');
  }
}

function bar() {
  assertFoo();
  console.log('Barrr!');
}

try {
  bar();
} catch (e) {
  console.log(e.message);
}
...