Consider the following:
private $var1 = "apple";
private $var2 = "orange";
$obj = new MyClass();
// do this
// do that
PHP evaluates my object to true because it has member variables.
This is incorrect. PHP actually evaluates
true because it holds an object. It has nothing to do with the contents of the object. You can verify this by removing the members from your class definition, it won't make any difference in which branch of the if/else is chosen.
There is no way of making PHP evaluate a variable to true if it holds to an object. You'd have to assign one of the following to the variable first:
null array() "" false 0