Давайте представим что у вас помимо машин появились ещё самолёты. Тогда у вас появится второй класс:
class Aircraft
{
public $db;
public function getAll(){
$result = $this->db->query("SELECT * FROM `aircraft`");
$data = array();
foreach($result->fetchAll() as $row){
$data[$row['id']] = $row['model'];
}
return $data;
}
}
То есть отличий от Car - только название таблицы. Соответственно, мы должны выделить весь код в отдельный суперкласс
class Transport
{
public $db;
protected $table = null;
public function getAll(){
$result = $this->db->query("SELECT * FROM `{$this->table}`");
$data = array();
foreach($result->fetchAll() as $row){
$data[$row['id']] = $row['model'];
}
return $data;
}
}
class Car extends Transport
{
protected $table = 'car';
}
class Car extends Transport
{
protected $table = 'aircraft';
}
К чему это я? Ах да!
Вам нужно создать класс для доступа к базе данных отдельно. Без привязки к какой либо таблице и в нём добавить методы для выборки по конкретным условиям. И уже от него наследовать все классы, которые что то читают из таблицы.