Note, https://bugs.php.net/bug.php?id=40459 shows that __construct() not being called in all cases was a bug, and it was fixed in August 2012.
(PHP 4 >= 4.3.2, PHP 5, PHP 7, PHP 8)
streamWrapper::__construct — Constrói um novo empacotador de fluxo
Chamado na abertura do empacotador de fluxo, logo antes de streamWrapper::stream_open().
Esta função não possui parâmetros.
Note, https://bugs.php.net/bug.php?id=40459 shows that __construct() not being called in all cases was a bug, and it was fixed in August 2012.
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.