This description is a little inaccurate, though on the right lines. It doesn't matter if the scope was to include another member, the problem is that a default value to a member property cannot be an expression at all. Only constant data is allowed, not even a
private $var = 4 + 4; is allowed.
As pointed out, a simple constructor gets around this problem completely. You don't even need to accept anything:
PHP Code:
public function __construct()
{
$this->foo = 4 + 4;
}
This is why I recommend initializing all variables within the constructor instead of the member signature. Since I like to keep it consistent, I won't split the two up, but more often than not a member property is dynamic in nature.