Ci sono diversi problemi con il tuo codice.
Due sono state spiegate nell'altra risposta, il che farà funzionare il tuo codice (alla fine è stato tutto rovinato), ma è ancora un approccio sbagliato, che si collegherà al database tante volte quanti più oggetti hai .
Cambia la classe DatabaseConnection in questo modo
class DatabaseConnection{
public $pdo;
public function __construct(){
$user = 'root';
$pass = '';
$dsn = 'mysql:charset=utf8;dbname=test;host=localhost;charset=utf8';
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
);
$this->pdo = new PDO($dsn, 'root', '', $opt);
}
}
Cambia il costruttore LoginRegister in questo modo
function __construct($db){
$this->db= $db;
}
E crea register.php in questo modo
require_once "functions.php";
$db = new DatabaseConnection();
$user = new LoginRegister($db->pdo);
e poi in LoginRegister usa $this->db
invece di $pdo
fino in fondo.
L'idea principale di rendere la connessione $db un servizio esterno per la classe dell'applicazione. Altrimenti sarà lo stesso disprezzato globale, ma solo in un'altra forma.