creo que tienes un problema, haces dos conexiones.
setDb no debería crear una conexión, sino reusar una que ya existe, por eso le pase como parámetro el valor que regresa getDb,
Código PHP:
Ver originalclass producto{
//codigo
public function setDb($db){
$this->cnx_db = $db
}
//codigo
}
$producto = new producto()
$producto->setDb($db->getDb);