@capscom

Как правильно использовать паттерн UnitOfWork?

Читал в сети разные виды реализаций этого паттерна. На php видел только одну, в Doctrine 2.
И как-то у меня нет полного понимания какие задачи он решает, например псевдокод:

$unitOfWork = new UnitOfWork(function() use(...) {
            $userRepository = new UserRepository();
            $roleRepository = new RoleRepository();

            $user = $userRepository->create(array());

            $roleRepository->add($user, 'admin');
    });

    $unitOfWork->commit();


В таком виде, UoW - инкапсулирует в себе транзакцию. Паттерн Repository - инкапсулирует логику работы с хранилищем. И вот тут у меня полное непонимание. Если вдруг $userRepository начинает оперировать с нереляционным хранилищем. Каким образом UoW разрулит этот конфликт? Или, например, $userRepository - запись ведет по одному соединению, а чтение по другому ? .....
Да и в целом, те же репозитории могут пробрасываться через IoC, при смене хранилища.

Объясните, пожалуйста, какие задачи и как их должен решать UoW ? ( например, если проект наглухо не завязан на одном хранилище )
  • Вопрос задан
  • 204 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы