логика кода php по версии

Я хочу что-то вроде решения: Представьте, что у меня есть блок try catch, он работает в любом php 5.?.? версии, но с блоком finally не в любой. мой код должен быть таким:

try {

    // some logic

} catch (Exception $ex) {
    // some logic
} finally {
    // other logic
}

но как мне сделать так, чтобы блок finally работал только в том случае, если версия php поддерживает его, иначе игнорировал? Например:

try {
    // some logic
} catch (Exception $ex) {
    // some logic
}
#if version=5.?.?
finally {
    // other logic
}
#endif

Есть ли решение?


person Arkadi    schedule 29.12.2015    source источник
comment
Если вы можете сделать без блока finally — зачем использовать блок finally?   -  person Deep    schedule 29.12.2015
comment
если я выброшу исключение в блоке catch, всегда будет выполняться код внутри finally тем не менее throw   -  person Arkadi    schedule 29.12.2015
comment
Этот ответ может быть связан с: Вы можете включать разные сценарии в зависимости от версии   -  person FirstOne    schedule 29.12.2015


Ответы (3)


Вы можете получить версию php с помощью метода phpversion. Единственный вариант, который у вас есть, это написать оператор if, чтобы проверить это; если он поддерживает запись всего блока try-catch-finally. Если это не так, пишите только try-catch. Вы можете использовать встроенные функции для предотвращения дублирования кода. Я понятия не имею, зачем это кому-то нужно, но, например;

function fncTry(){...}
function fncCatch($exception){...}
function fncFinally(){...}

if($phpVersion == '5.5'){
   try { fncTry(); }
   catch(Exception $ex) { fncCatch($ex); }
   finally { fncFinally(); }
}else{
   try { fncTry(); }
   catch(Exception $ex) { fncCatch($ex); }

   fncFinally();
}
person abeyaz    schedule 29.12.2015

Да.

phpversion() вернет строку версии php. (Пример: "5.6.14")

Вы можете использовать это для настройки своего условного оператора.

person P. Gearman    schedule 29.12.2015
comment
Вопрос не о проверке версии php - person u_mulder; 29.12.2015
comment
Поскольку finally поддерживается только в php 5.5 или более поздних версиях, да, технически, вопрос в том, какая версия php используется. - person P. Gearman; 29.12.2015

извините, я запутался :)

проверьте это

и вы можете проверить phpversion, прежде чем пытаться поймать

если (версия php == 5.5 или выше)

вы делаете это, наконец

иначе вы сделаете это без окончательно

person Alaa M. Jaddou    schedule 29.12.2015
comment
Вопрос не в проверке версии php. - person u_mulder; 29.12.2015
comment
извините, я не узнал - person Alaa M. Jaddou; 29.12.2015
comment
А какую функцию надо проверять - finally? finally не является функцией. - person u_mulder; 29.12.2015
comment
проверьте ссылку, которую я добавил - person Alaa M. Jaddou; 29.12.2015