Как организовать работу с БД в php с использованием ООП подхода? Здравствуйте. Суть вопроса вот в чем: у меня есть Сотрудники с полями имя,дата рождения, отдел, должность, количество отработанных часов, ставка, зарплата. class Employeer{
public $name;
public $birthday;
public $dep;
public $pos;
public $count_hour;
public $cost_hour;
public $salary;
}
И сотрудники хранятся в БД.
Как правильно организовать работу с БД? Я пока новичок и не совсем понимаю, какое верное решение.
Описывать прямо в классе Employeer методы для работы с БД? Например add(), getAll(), delete() ?
Или нужно создавать отдельный класс для этого и в классе сотрудника потом создавать экземпляр этого класса и ему передавать данные?
И еще, у меня есть два разных типа сотрудника, отличающиеся способом оплаты . Создается два отдельных класса, каждый работает с БД.
Подскажите, пожалуйста, как разумно все сделать ? Заранее огромное спасибо!

21 Авг 2019 в 07:03
197 +1
0
Ответы
1

Для организации работы с БД в PHP с использованием ООП подхода, можно реализовать следующую структуру:

Создайте отдельный класс для работы с БД, например, DBManager, который будет содержать методы для соединения с БД, выполнения запросов и получения/обработки данных.

В классе Employeer опишите только поля и методы связанные с сотрудником, например, методы для получения/установки данных о сотруднике.

Создайте два отдельных класса для двух разных типов сотрудников, например, HourlyEmployee и SalariedEmployee, которые будут наследоваться от класса Employeer и содержать свои особенности оплаты.

В каждом из классов для типов сотрудников реализуйте методы add(), getAll(), delete(), которые будут использовать методы DBManager для выполнения запросов к БД.

Примерная структура классов:

class DBManager {
// Методы для работы с БД
}
class Employeer{
public $name;
public $birthday;
public $dep;
public $pos;
protected $dbManager;
public function __construct(DBManager $dbManager){
$this->dbManager = $dbManager;
}
// Методы для работы с данными о сотруднике
}
class HourlyEmployee extends Employeer {
public $count_hour;
public $cost_hour;
public function add(){
// Добавление данных в БД
}
// Дополнительные методы для работников по часам
}
class SalariedEmployee extends Employeer {
public $salary;
public function add(){
// Добавление данных в БД
}
// Дополнительные методы для работников с фиксированной зарплатой
}

Таким образом, вы разделяете ответственность между классами (Employeer, HourlyEmployee, SalariedEmployee) и классом для работы с БД (DBManager), что делает вашу структуру более гибкой и упрощает поддержку и расширение функционала. Кроме того, для работы с данными о сотрудниках, вы используете уже готовые функции DBManager, что повышает повторное использование кода.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир