Con PDO dovresti stare tranquillo...ma potrebbe capitarti che su un host non sia abilitato e quindi dover riscrivere tutto utilizzando mysql(i).

La cosa migliore sarebbe quella di lavorare, nella tua classe elenco, con un oggetto che non dipende dal driver che usi. Al volo mi verrebbe da fare qualcosa del tipo

Codice PHP:
class myPDODb{
    public function 
connect();
    
    public function 
insert($table$fields$values);
    public function 
delete($table$id);
    public function 
find($table$conditions$limit$order$etc);
    public function 
query($sql);
}

class 
myMysqliDb(){
    public function 
connect();
    
    public function 
insert($table$fields$values);
    public function 
delete($table$id);
    public function 
find($table$conditions$limit$order$etc);
    public function 
query($sql);
}

class 
model{
   private 
$db;
   public 
$table;
  
   public function 
valiates();
   public function 
beforeSave();
   public function 
afterSave();

   public 
getDb(){
        
// In base a come è configurato l'host, carico la classe giusta
        // es: $this->db = new myPDODb(); 
   
}

   public function 
insert($fields$values){
         
// posso validare i dati prima di salvarli nel db
         
$this->validates();
         
// posso eseguire un azione prima di salvare. es hash di una password
         
$this->beforeSave();
         
// inserisco nel db, senza preoccuparmi di quale driver uso
         
$this->db->insert($this->table$fields$values);
         
// posso fare un'azione dopo il salvataggio
         
$this->afterSave();
   }
   public function 
delete($id){
       ...
   }
}

class 
Elenco extends Model{
   public 
$table 'elenco';
   public 
__construct(){
       
$this->getDb();
   }

   public function 
getCategoria(){
        return 
$this->find(...);
   }