Il y a plusieurs problèmes avec votre code.
Deux ont été expliqués dans l'autre réponse, ce qui fera fonctionner votre code (tout a finalement été gâché), mais c'est toujours une mauvaise approche, qui se connectera à la base de données autant de fois que vous avez d'objets .
Modifiez la classe DatabaseConnection de cette façon
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);
}
}
Modifiez le constructeur de LoginRegister de cette façon
function __construct($db){
$this->db= $db;
}
Et créez ainsi register.php
require_once "functions.php";
$db = new DatabaseConnection();
$user = new LoginRegister($db->pdo);
puis dans LoginRegister, utilisez $this->db
au lieu de $pdo
tout le chemin.
L'idée principale de faire de la connexion $db un service externe pour la classe d'application. Sinon, ce sera tout de même méprisé global, mais juste sous une autre forme.