Область переменных PHP в блоке Try/Catch
в PHP, как правила области переменных применяются к блокам Try/Catch? Переменные объявленные внутри try
блок выходит из области действия, когда блок завершен? Или они находятся в области действия до конца функции / метода?
например:
try
{
// This may throw an exception when created!
$o = new Pronk();
}
catch (Exception $ex)
{
// Handle & exit somehow; not important here
return false;
}
$o->doPronk();
это действительное? Или должен!--2--> быть установлен перед try/catch, чтобы сохранить $o
в область?
(Я знаю, что пример кода тут работа, однако я также знаю, что PHP может стать немного глупым когда дело доходит до исследования. Мой вопрос, в идеале, как должны он работает? Как правильно и правильно это сделать?)
3 ответов
ваш код действителен. Переменная в PHP-это функция, а не блок. Таким образом, вы можете назначить переменную внутри try
блок и доступ к нему снаружи, пока они находятся в той же функции.
Я считаю, что это мнение в основном основано. Код правильный, и он будет работать так, как ожидалось, пока catch
блок всегда имеет return
заявление. если catch
блок не возвращается, поток будет продолжаться, и код вне блока try / catch будет выполнен, и он потерпит неудачу, потому что $o
не будет инициализирован. Вы сможете получить доступ $o
из-за отсутствия области блока в php, но метод не будет существовать, потому что не удалось построить объект.
основная концепция обработки исключений заключается в том, что если что-то пойдет не так внутри блока "try", код войдет в блок "catch". так что если
$o = new Pronk();
не вызывает никаких ошибок, он будет в области. нам не нужно объявлять его перед блоком try/catch. ваш код совершенно действителен.