AlkatraZ, да, он имел ввиду 9 строку. Я же пытаюсь понять, зачем КоханийВолодимир в принципе использует классы в своем коде, если его смущает "многословность" при их вызове?
AlkatraZ, да, он имел ввиду 9 строку. Я же пытаюсь понять, зачем КоханийВолодимир в принципе использует классы в своем коде, если его смущает "многословность" при их вызове?
# Delphinum (28.01.2017 / 21:06)На сегодня РНР внутренне сильно оптимизирован под ООП, выполняет все это очень быстро.
AlkatraZ, да, он имел ввиду 9 строку. Я же пытаюсь понять, зачем КоханийВолодимир в принципе использует классы в своем коде, если его смущает "многословность" при их вызове?
В общем, что нужно ORM:
1. Преобразование данных БД -> PHP -> БД
2. Сборка данных из объектов, запись данных в объекты
3. Связи по правилам ООП, а не реляционные
Но обычно для этого нужно реализовать еще:
4. Шаблон UnitOfWork
L!MP, вообще это долгая история, если кратко, то он позволяет отсрочить взаимодействие с БД, это очень важно при использовании модели (DDD на пример).
В остальном, конечно можно без UoW. Для ORM вообще достаточен один шаблон - Hydrator.
# Delphinum (13.02.2017 / 23:39)Ну я по сути не вижу особой разницы для кода приложения между:
L!MP, вообще это долгая история, если кратко, то он позволяет отсрочить взаимодействие с БД, это очень важно при использовании модели (DDD на пример).
В остальном, конечно можно без UoW. Для ORM в
$entityManager->store($entity); // выполнение транзакции$entityManager->store($entity);
$entityManager->commit(); // выполнение транзакции# L!MP (14.02.2017 / 16:57)Тут ты не прав
$entityManager->store($entity); // выполнение транзакции
и
$entityManager->store($entity);
$entityManager->commit(); // выполнение транзакции
$entityManager->store($entity); // Начало транзакции
...
...
// Дофига чего еще может произойти
...
$entityManager->commit(); // Именно тут ВЫПОЛНЕНИЕ транзакции и запись в базу AlkatraZ, я описал два варианта развития событий, с UoW и без (первый).
В первом варианте данные отправляются в хранилище сразу же при вызове метода не дожидаясь коммита.
# L!MP (14.02.2017 / 23:03)Тогда нельзя называть это действие "транзакцией".
AlkatraZ, я описал два варианта развития событий, с UoW и без (первый).
В первом варианте данные отправляются в хранилище сразу же при вызове метода не дожидаясь коммита.
# AlkatraZ (14.02.2017 / 23:04)Олег, там то же запрос идёт через транзакцию, так как есть же каскадное сохранение связанных сущностей и если что-то пойдет не так, то нужно откатить все изменения.
Тогда нельзя называть это действие "транзакцией".
С точки зрения базы - это разные понятия.