$db = new Db();
$result = $db->select("SELECT * FROM `test_db` where id=:id",array(":id" => $lineID));
Mně se takový wrapper jeví jako nešikovný. Raději si to napíši jako poctivé 3-4 řádky
$db = new PDO(...);
$sql = "SELECT * FROM `test_db` where id=:id";
$select = $db->prepare($sql);
$select->execute(array("id" => $id));
$result = $select->fetchAll();
A důvod? Každá z těch metod má mnoho volitelných parametrů, pomocí kterých se dá nahradit mnoho vlastností, na které se často používá ORM. Snažit se to natřískat do jednoho wrapperu je cestou do pekel. Navíc se takový prepared statement dá použít opakovaně, což ten wrapper neumí.
V neposlední řadě se to i dobře testuje.
Je ale fakt, že několik wrapperů používám, např.
$db = new MyPDO($config);
$id = $db->insert('User', ['name' => "Kit", 'type' => "admin"]);
Ovšem jak je vidět, tvorba SQL je už zcela ukryta uvnitř. Pokud bych chtěl wrapper na uvedený případ, vypadal by asi takto:
$data = $db->select('test_db', ['id' => $id]);
Ovšem má to spoustu much - například chybí seznam sloupců, jejich přejmenování, není z toho patrné, zda chci pole, dict, anonymní objekt nebo objekt nějaké třídy - prostě to není ono. Pokud bych to chtěl podchytit všechno, bude ovládání složitější, než napsání SQL a stejně to bude umět jen jednoduché dotazy.