Istnieje kilka problemów z Twoim kodem.
Dwa zostały wyjaśnione w drugiej odpowiedzi, dzięki czemu Twój kod będzie działał (w końcu wszystko zostało zepsute), ale to nadal złe podejście, które połączy się z bazą danych tyle razy, ile masz obiektów .
Zmień w ten sposób klasę 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);
}
}
Zmień konstruktora LoginRegister w ten sposób
function __construct($db){
$this->db= $db;
}
I w ten sposób stwórz register.php
require_once "functions.php";
$db = new DatabaseConnection();
$user = new LoginRegister($db->pdo);
a następnie w LoginRegister użyj $this->db
zamiast $pdo
przez całą drogę.
Główny pomysł, aby połączenie $db było usługą zewnętrzną dla klasy aplikacji. W przeciwnym razie wszystko będzie takie samo, jak pogardzane globalne, ale tylko w innej formie.