$post = array('id' => 100, 'name' => 'Книга11', 'author_id' => 11, 'price' => 1111);
$obj->edit($post); //редактируем
//$stmt->execute($z);
try {
$stmt->execute($z);
$rs_stmt = $stmt->fetchAll(); // тут наверное стоит взять либо fetchAssoc либо fetchNum.
}catch(e){
// обработка исключения... например
$rs_stmt = null;
}
// банально запрос может не выполниться, ниже следующая строка не сработает
// return $stmt->fetchAll();
return $rs_stmt;
$post = array('id' => 100, 'name' => 'Книга11', 'author_id' => 11, 'price' => 1111);
$obj->edit($post); //редактируем
$obj->showAll(); //получаем весь массив книг
$obj->showOne(100); //получаем только одну книгу
$obj->getAll(); //получаем весь массив книг
$obj->getOne(100); //получаем только одну книгу
И один приватный select(array $param) который взаимодействуя с showAll и showOne, меняет запрос к бд.
Со временем появляются новые задачи, функционал (например добавить обложку, добавить аннотацию и тд.)
// BookI
class BookI extends Book{
// описываете новые свойства
// добавляете новые и/или 'перегружаете' старые методы
}
Если бы задача стояла вывести какой нибудь иной selectByAuthor(), тогда да, есть смысл наследовать тот же private select.