Chissà cosa avevi sbagliato, comunque, giusto per completezza il metodo che stai usando è errato.
Innanzitutto è meglio usare una isset per verificare l'esistenza dell'input, secondo è bene verificate che tutti gli input che ti aspetti vengano passati prima di dare errore ed in ultimo il secondo metodo che avevi adottato era quello migliore. Il costruttore non dovrebbe mai intercettare l'input ma semplicemente inizializzare l'oggetto.