Just to clarify what was said above, as far as I can tell, __construct is *only* called before stream_open.
It does not get called for other functions such as stream::url_stat or stream::unlink, even though those functions do create a new object.
This behavior is contrary to normal expectations for php object creation. But based on the documentation above I can only assume that it is by design.