public static function setConnection(PDO $conn) { self::$conn = $conn; }
<?php require_once 'classes/dm/Produto.php'; require_once 'classes/dm/Venda.php'; require_once 'classes/dm/VendaMapper.php'; try { $p1 = new Produto(); $p1->id = 1; $p1->preco = 12; $p2 = new Produto(); $p2->id = 2; $p2->preco = 14; $venda = new Venda(); $venda->addItem(10, $p1); $venda->addItem(20, $p2); $conn = new PDO('sqlite:database/estoque.db'); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); VendaMapper::setConnection($conn); VendaMapper::save($venda); } catch (Exception $e) { print $e->getMessage(); }
*/ final class VendaMapper { function insert(Venda $venda) { $id = $venda->getID(); date_default_timezone_set('America/Sao_Paulo'); $date = date("Y-m-d"); // insere a venda no banco de dados $sql = "INSERT INTO venda (id, data) values ('{$id}', '{$date}')"; echo $sql . "<br>\n"; // percorre os itens vendidos foreach ($venda->getItens() as $item) { $quantidade = $item[0]; $produto = $item[1]; $descricao = $produto->getDescricao(); // insere os itens da venda no banco de dados $sql = "INSERT INTO venda_items (ref_venda, produto, quantidade)" . " values ('{$id}', '{$descricao}', '{$quantidade}')"; echo $sql . "<br>\n"; } } } // instancia objeto Venda $venda = new Venda(1000); // adiciona alguns produtos $venda->addItem(3, new Produto('Vinho', 10, 15)); $venda->addItem(2, new Produto('Salame', 20, 20)); $venda->addItem(1, new Produto('Queijo', 30, 10)); // Data Mapper persiste a venda VendaMapper::insert($venda);