*/
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);