Има няколко проблема с вашия код.
Две бяха обяснени в другия отговор, което ще направи кода ви работещ (в крайна сметка всичко беше развалено), но все още е грешен подход, който ще свърже към базата данни толкова пъти, колкото обекти имате .
Променете класа DatabaseConnection по този начин
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);
}
}
Променете конструктора на LoginRegister по този начин
function __construct($db){
$this->db= $db;
}
И направете register.php по този начин
require_once "functions.php";
$db = new DatabaseConnection();
$user = new LoginRegister($db->pdo);
и след това в LoginRegister използвайте $this->db
вместо $pdo
докрай.
Основната идея да се направи $db връзката външна услуга за класа на приложението. В противен случай всичко ще бъде същото като презряния глобален, но само в друга форма.