I’ve seen the following lines of code and I know what they do, but I don’t know how the second line works (and hence how to apply it to another situation).
$user = User::model()->findByPk(123);
empty($user->profile) and $user->profile = new Profile();
The code tries to look up the User from the database, and if there isn’t a profile, creates a new for use later on.
I have also seen code before that goes something like the following:
$variable1 = $variable2 = $variable3;
It did something a bit more complex than simple assigning three things to be the same, but I’m finding it impossible to search for this type of thing to find out any information about it, let alone find the original code that I came across. I think it originally had an ‘and’ in there somewhere. Does anyone know how to search for code that has more than one equals sign in it that wasn’t just an if statement?
Sorry for the two questions in one (and vague at that) and the terrible title (I’ll fix it up when I know what the names are, if it’s anything like a tenary statement)).
Using Logical Operators to Skip Code:
As php evaluates a line with the AND operator, if the fist part is false, the second part is not evaluated since it would not change the result.
So in this case, if
empty()returns true, then php evaluates the right side. Ifempty()returns false, no more evaluation is done and the profile is not effected.The php manual logical operators page has some illustrations of this.
Multiple Assignment Operators: The assignment operator assigns the right expression to the variable on the left.
In this case
$variable2is set to the value of$variable3then$variable1is set to the value of$variable2. The php manual assignment operators page covers this.