Váš kód má několik problémů.
Dva byly vysvětleny v druhé odpovědi, díky čemuž bude váš kód fungovat (nakonec se to všechno pokazilo), ale stále je to špatný přístup, který se připojí k databázi tolikrát, kolik máte objektů .
Tímto způsobem změňte třídu 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);
}
}
Tímto způsobem změňte konstruktor LoginRegister
function __construct($db){
$this->db= $db;
}
A tímto způsobem vytvořte register.php
require_once "functions.php";
$db = new DatabaseConnection();
$user = new LoginRegister($db->pdo);
a poté v LoginRegister použijte $this->db
místo $pdo
celou cestu.
Hlavní myšlenkou udělat z připojení $db externí službu pro aplikační třídu. Jinak to bude stejné jako opovrhované globální, ale jen v jiné podobě.