I'm trying to replicate this condition:
$sth = $this->getResult();
if($sth !== true){
return $sth;
}
with ternary operator I tried with;
($sth !== true) ? return $sth : ($sth == true) ? null;
But I got:
Expected colon
I'm trying to replicate this condition:
$sth = $this->getResult();
if($sth !== true){
return $sth;
}
with ternary operator I tried with;
($sth !== true) ? return $sth : ($sth == true) ? null;
But I got:
Expected colon
What you're ultimately trying to achieve is not possible with a ternary operator.
What you try to do is ONLY return in 1 situation, and continue the code in the other. The only way you could do this using a ternary operator is like this:
$result = ($sth !== true) ? true : false;
if ($result) return;
But that kinda defeats the purpose of the ternary operator.
In fact, your code has a couple of problems:
return
inside the truthy or falsy part.A ternary operator needs 3 parts
(condition) ? truthy result : falsy result
Note: Since PHP 5.3, it is possible to leave out the middle part of the ternary operator. Expression expr1 ?: expr3 returns expr1 if expr1 evaluates to TRUE, and expr3 otherwise. - source: php.net
No need to check things twice:
Again, let's take our operator:
($sth !== true)
? "I return if '$sth' is not true"
: "I return if '$sth' is true";
There is no need to have a 2nd check. You have both situations covered already. :)
No return values inside the truthy or falsy part
Finally: it is an operator that returns a value. You can't put a return
in the truthy or falsy part, you need to put it in front of it:
return ($sth !== true)
? "I return if '$sth' is not true"
: "I return if '$sth' is true";