Out of curiosity, Couldn't PHP raise an error when there is an uninitialized state left unhandled after calling the constructor?
It might make the developer think of either providing a default value or initializing it in the constructor. Hence no uninitialized state.