etornando um valor na função construtora de uma clas

Até agora eu tenho umPHP classe com o construtor

public function __construct ($identifier = NULL)
{
 // Return me.
if ( $identifier != NULL )
{
  $this->emailAddress = $identifier;
  if ($this->loadUser() )
    return $this;      
  else
  {
// registered user requested , but not found ! 
return false;
  }
}

a funcionalidade deloadUser é procurar no banco de dados um endereço de email específico. Quando defino o identificador para algum email, tenho certeza de que não está no banco de dados; o primeiro IF é passado e passa para o primeiro ELSE. aqui o construtor deve retornar FALSE; mas, em vez disso, ele retorna um objeto da classe com todos os valores NULL!

Como evito isso? obrigad

EDITAR

Obrigado a todos pelas respostas. isso foi bem rápido! Vejo que a maneira OOP é lançar uma exceção. Então, um lance, minha pergunta muda que o que devo fazer com a exceção? O manual do php.net é bastante confuso!

    // Setup the user ( we assume he is a user first. referees, admins are   considered users too )
    try { $him = new user ($_emailAddress);
    } catch (Exception $e_u) { 
      // try the groups database
      try { $him = new group ($_emailAddress); 
      } catch (Exception $e_g) {
          // email address was not in any of them !!  
        }
    }

questionAnswers(8)

yourAnswerToTheQuestion