在PHP中,我可以将返回布尔值的整个函数块放在if条件的表达式中吗?例如:if(函数(){return true;})

在PHP中,我可以将返回布尔值的整个函数块放在if条件的表达式中吗?例如:if(函数(){return true;}),php,function,if-statement,conditional-statements,Php,Function,If Statement,Conditional Statements,我最近在PHP中创建了一个条件语句。如果我能把一个函数的整个块放在括号内,或者把表达式放在if条件下,我会很烦恼。例如: if( ! function($some_vars) { //Execute logic of the function here return false; }) { // Execute if the function above returns false; } PS:上面的代码不返回任何错误,但也不执行函数内部的逻辑。我的问题是:上述代

我最近在PHP中创建了一个条件语句。如果我能把一个函数的整个块放在括号内,或者把表达式放在if条件下,我会很烦恼。例如:

if( ! function($some_vars) {
     //Execute logic of the function here
     return false;
}) {
     // Execute if the function above returns false;
}
PS:上面的代码不返回任何错误,但也不执行函数内部的逻辑。我的问题是:上述代码是否可能,如果可能,是否安全/推荐

谢谢

您现在可以使用执行此功能:

if(!call_user_func(function($some_vars) {
     //Execute logic of the function here
     var_dump($some_vars);
     return false;
},"a variable called some_vars")) {
     var_dump("yes");
}
但由于可读性原因,不推荐使用。因此,以下代码更具可读性:

function checkSomeVar($some_vars) {
     //Execute logic of the function here
     var_dump($some_vars);
     return false;
}

if(!checkSomeVar("a variable called some_vars")) {
   var_dump("yes");
}

您只需声明匿名函数,但不调用它,请尝试在声明后添加括号。但是我不知道它是否有效,不建议使用它,因为它不可读。我不知道你需要函数做什么,你应该能够在没有函数包装器的情况下将任何必要的表达式放入if条件中。如果函数体太长,并且包含无法在表达式中表达的语句,那么它不应该处于If条件下。为什么不执行函数myFunction{…return false},然后执行If!myFunction{…}?好吧,我像你一样创建@MickaelLeger函数很多年了,但是今天早上我想到了这个代码,没有考虑它是否可读。我的错!仅仅因为你可以,并不意味着你应该……谢谢@Blauharley!我已经做了很多年了。我只是好奇,今天早上我没有考虑代码是否可读就想到了它。@JhunieRaySuarez:不客气。我完全明白你的意思,你有时想测试什么是可以写的,或者什么是语言的限制,而不是在生产中使用这些代码;