A ver, tenemos un objeto Árbol, que tiene una propiedad llamada Rama.
Cita: class Tree
{
public $branch;
}
class Branch
{
}
Ahora quieres que tu objeto Jardín contenga un Árbol, pero desde el Jardín no puedes llamar a la Rama.
Cita: class Garden
{
public $tree;
}
Entonces primero tienes que llamar al objeto Árbol dentro de Jardín para poder acceder a su propiedad Rama.
Cita: $my = new Garden;
echo $my->branch; // ERROR
$my->tree = new Tree;
$my->tree->branch = new Branch;
echo $my->tree->branch; // OK
Justamente eso es lo que te está sucediendo, si lo piensas un poco la profundidad de las propiedades depende del nivel/scope/contexto donde se haya instanciado.
Como en tu objeto Adapter instancias la conexión a PDO en su propiedad _dbh no es posible accederla directamente desde User, pues la propiedad _dbh de User contiene la instancia de Adpater, mas no de PDO.