8. Transaction Script Каждая операция реализована своим методом public function addToCart() { //retrieve user data from session //retrieve product from database //add product information to quote //… //… //save quote data to database }
9. Объектами представлены реальные сущности Domain Model Business Logic Layer Order Category Product Quote Payment Cart Customer_Address Customer
10. Расслоение. А как в Magento? Service Layer Domain Models Sales |--Block |--controllers |--etc |--Helper |--Model | |--Mysql4 | |-- Billing | |-- Entity | |-- Payment | |-- Order.php | |-- Quote.php Data Mappers Data Access Objects
12. Data Mapper /*Осуществляет передачу данных между объектами и базой данных, сохраняя их независимыми друг от друга и от самого маппера*/ Data Models
13. Zend Way Matthew Weier O’Phinney <?php class App_Model_UserDataMapper { public function save(App_Model_User$user) { $dao= $this->getDao(); $id = $user->getId(); if (!$id) { $id = $dao->insert($user->toArray()); } else { $dao->update($user->toArray(), array(‘id=?’, $id)); } $record = $dao->find($id)->current(); $user->setOptions($record->toArray()); return $user; }
17. Отличия от классики Доменные модели знают о своих ресурс-моделях Mage_Sales_Model_Order public function getProductIds() { $ids = $this->getData('product_ids'); if (is_null($ids)) { $ids = $this->_getResource()->getProductIds($this); $this->setProductIds($ids); } return $ids; }