Now the write method does not to be overwritten when the format of the dataStream the Socket sends has to be altered in any way the formatter cannot handle (See the PushoverHandler for an example)
Before, the write method would alter the $record array and then call parent::write().
Now the method builds the string which should be written into the stream and then does it himself.
I had to change two methods to be protected so the PushoverHandler could call them.
The PushoverHandler sends messages to api.pushover.net. The class depends on the SocketHandler
I modified the SocketHandler to make it possible to change the port for subclasses (Pushover needs the explicit port 80 to work)
The tests only see if the content sent to the api is correct. The rest should be already covered in the tests for the Sockets.