Хочу разобраться, каким образом сделать управление записями Книга на моём примере книг.
Видел разные реализации, собрал что-то своё :)
Таблица
CREATE TABLE `books` (
`id` smallint(5) UNSIGNED NOT NULL,
`name` varchar(255) NOT NULL,
`price` smallint(5) NOT NULL
) ENGINE=InnoDB;
Планирую, используя ООП, сделать управление этой таблицей. Интересует больше теория.
Вариант первый
class BookControl
{
protected $db;
public function initDatabase(PDO $db){
$this->db = $db;
}
public function create(array $data){
/* Insert in database */
}
public function update(array $data){
/* update/delete in database */
}
public function getAll(){
/* return array all rows */
}
public function getById($id){
/* return one row */
}
}
Вариант второй
class Book
{
public $id;
public $name;
public $price;
public function __construct(int $id, string $name, int $price){
$this->id = $id;
$this->name = $name;
$this->price = $price;
}
public function getId(){
return $this->id;
}
public function getName(){
return $this->name;
}
public function getPrice(){
return $this->price;
}
public function changeName(string $name){
$this->name = $name;
}
public function changePricen(int $price){
$this->price = $price;
}
}
class BookControl2
{
public $book;
public function initDatabase(PDO $db){
$this->db = $db;
}
public function create(Book $book){
/* create */
}
public function update(Book $book){
/* update */
}
public function get(Book $book){
/* return book objects */
}
}
Второй получше реализует принцип ооп, хотя на ДАННОМ примере не совсем понятно его преимущество.
Вразумите пожалуйста, каким образом в дальнейшем грамотней делать. Первый или второй вариант. И самое главное, чтобы другой программист быстрее разобрался и доработал.