Здравствуйте, встретился следующий код PHP: function foo($var = false){ try{ bar(); echo "Good<br>"; }catch(Exception $e){ echo $e->getMessage(); } } function bar(){ baz(); } function baz(){ if(!$var) throw new Exception("Bad<br>"); } Как несложно догадаться следующий вызов: PHP: var_dump(foo(), foo(1)); в обоих случаях вернет false, что и не удивительно ведь baz() не видит аргумента функции foo(). Описать аргумент $var в baz() тоже не вариант т.к. это будет уже другой аргумент. Так как сделать так чтобы baz() увидел аргумент foo()?
либо передать аргумент дальше, либо использовать замыкания внутри foo: PHP: function foo($var = false){ $baz = function () use ($var) { /*... */ } $bar = function () use ($var, $baz) {$baz()} try{ $bar(); echo "Good<br>"; }catch(Exception $e){ echo $e->getMessage(); } }