У меня есть таблица базы данных (MySQL), представляющая сущность Работник на предприятии, как приложение. Суррогатные ключи используются во всей базе данных, поэтому каждый Работник запись имеет автоматически увеличенный столбец идентификатора, идентифицирующий сотрудника. Я смоделировал Employee как бизнес-объект (BO) в php следующим образом:
class Employee
{
public $id; // surrogate key of database record
public $firstName;
public $user;
public $posInCompany // associated EmployeePosition
public function __construct($emplData)
{
$this->id = $emplData['id'];
// ... init other properties
}
}
Мне интересно, если $id
свойство должно быть частью этого класса? На самом деле он представляет собой суррогатный ключ из базы данных и, таким образом, связан с хранилищем. Но я хочу, чтобы BO ничего не знали о том, как они хранятся / загружаются (отделение логики от постоянства). BO содержат для меня бизнес-логику, и я хочу работать с ними БЕЗ какой-либо связи с типом хранилища (база данных и т. Д.). С моим вышеупомянутым расположением класса я никогда не мог создать экземпляр Работник не давая $id
, так что я думаю, что это не правильный способ реализации BO.
Я хочу работать с шаблоном DAO для хранения / загрузки Работник. Должен ли я использовать $id
только в рамках DAO?
Кроме того, я обеспокоен выявлением Работник объект в моем приложении позже, который будет хорошо работать с суррогатом $id
, $user
Свойство также уникально для каждого сотрудника в базе данных. Так, может быть, я должен использовать это свойство вместо?
Задача ещё не решена.
Других решений пока нет …