Cleaning up PHP object constructors
It is a bad idea for a constructor to contain non-trivial code. 
Constructors should assign values to fields or another simple actions.
If you need complex initialization, you should use factory object or factory method