Prova intanto a correggere la funzione in modo che restituisca SEMPRE un risultato
Come l'hai scritta tu, nel caso $result sia false, non restituisce nè True nè False
Anche se non credo sia questo il problema... visto che il messaggio è piuttosto chiaro, nel momento in cui fa la if ( $login->checkUser( $query) ), $login non è ancora (o non è più) un oggetto
A meno che non si riferisca alla variabile $result
Secondo me il problema è il modo in cui utilizzi/confondi la proprietà "num_rows" con il metodo "num_rows"
Probabilmente la tua funzione funzionerebbe così
Codice PHP:
public function checkUser($sql) {
if ($this->num_rows( $sql ) ){
return true;
else
return false;
}
}