Métodos em cadeia no PHP

Desde o lançamento da versão 5 do PHP com melhorias na orientação a objetos é possível encadear métodos de uma classe. Para funcionar, essa dica necessita que seu método retorne um objeto. No exemplo abaixo, através do encadeamento de métodos o sistema valida o login de um usuário.

class usuarios {
	var $email;
	var $senha;
	var $erro;
	
	function __construct( $email, $senha ) {
		$this->email = $email;
		$this->senha = $senha;
		$this->erro  = NULL;
	}
	
	function criticaDados() {
		if( !$this->email ) $this->erro ='E-mail inválido';
		elseif( !isset( $this->senha[6] ) ) $this->erro = 'Senha inválida';
		return $this;
	}
	
	function login() {
		if( is_null( $this->erro ) ) {
			return true;
		} else {
			return $this->erro;
		}
	}
	
	
}
$oUsuario->criticaDados()->login();