Приемлемая логика сущности?

У меня есть две сущности: Post и Post\Version. Я настроил его таким образом, что управление версиями автоматически обрабатывается в сущности Post, поэтому разработчику не нужно вручную использовать Post\Version. Он не использует EntityManager, просто немного размышлений... это нормально?

<?php

public function setContent($content)
{
    $this->_setVersionValue('content', $content);
}

private function _setVersionValue($property, $value)
{
    // get reflection property
    $version = clone $this->getActiveVersion();
    $refl = new \ReflectionProperty($version, $property);
    $refl->setAccessible(true);

    // update value
    $version->setCreatedBy($this->getCurrentUser());
    $refl->setValue($version, $value);

    // clear ID
    $reflProp = new \ReflectionProperty($version, 'id');
    $reflProp->setAccessible(true);
    $reflProp->setValue($version, null);

    // set to new version
    $this->setActiveVersion($version);
}

Почта хранит только ссылку на последнюю версию. Версии имеют обратную ссылку на пост, которому они принадлежат.


person Cobby    schedule 18.01.2011    source источник


Ответы (2)


Это прекрасно. Конечно, вы всегда должны найти свой собственный рабочий процесс, как смешивать классы и экземпляры.

person beberlei    schedule 19.01.2011

Я полагаю, что повторно используемое версионное поведение для Doctrine2 из официального блога намного проще в конечном использовании. Также легче адаптироваться к другим объектам.

PS. И Post, и PostVersion должны находиться в одном и том же пространстве имен (например, MyProject\Entity\Blog).

person Crozin    schedule 19.01.2011