Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Chegou a hora da verdade! A interface está funcionando, e vocês decidem colocar a integração com o banco de dados para funcionar. Assim, escrevem o seguinte código: $str = 'mysql:host=localhost;dbname=meu_banco;charset=utf8'; $db = new PDO($str, 'root', 'root'); $select = 'SELECT * FROM produtos'; Após este início, quais deveriam ser as linhas para executar este select no banco e pegar todos os produtos? a $ produtos = $db->fetch($select) b $produtos = $db->exec($select); c $consulta = $db->query($select); $produtos = $consulta->fetch(); d $consulta = $db->query($select); $produtos = $consulta->fetchAll(); e $ produtos = $db->fetchAll($select); Pontuação: 1 2 Você foi contratado por uma empresa para desenvolver uma aplicação de e- commerce. Na sua primeira semana, você foi incumbido de fazer programação em dupla com um programador back-end júnior. Juntos, vocês vão fazer o formulário de login do e-commerce. No entanto, o seu colega não sabe muito bem qual seria o método mais adequado para o formulário. Você responde que o mais adequado é o método: a POST, pois mantém as informações explícitas para o usuário, ideal para um formulário de login; b GET, pois mantém as informações escondidas do usuário, ideal para um formulário de login; c GET, pois mantém as informações explícitas para o usuário, ideal para um formulário de login; d POST, pois mantém as informações escondidas do usuário, ideal para um formulário de login; e GET ou POST seriam métodos igualmente adequados para este formulário. Pontuação: 1 3 Na hora de listar os produtos da loja, que vem dentro de uma array $produtos, o seu colega chegou ao seguinte código: for($i = 0; $i < count($produtos); $i++) { echo '<p>'. $produtos[$i]['nome'] .'</p>'; } Você identifica que o loop pode ser facilmente substituído por um foreach. Assim, sugere ao seu colega que substitua os trechos em negrito por: a foreach($produtos) e $p['nome'] b foreach($produtos) e $produtos['nome'] c foreach($produtos as $p) e $p['nome'] d foreach($produtos as $i) e $produtos[$i]['nome'] e foreach($p in $produtos) e $p['nome'] Pontuação: 1 4 Você e seu colega criam uma função para reajustar o valor de forma a oferecer um desconto base, cujo valor pode ser dobrado se o usuário atender a certas condições. A função está exemplificada abaixo: function calcularValorFinal($valor, $descontoBase, $dobrarDesconto){ if($dobrarDesconto){ $valor = $valor * (100 - $descontoBase * 2)/100; } else { $valor = $valor * (100 - $descontoBase)/100; } } Devido à arquitetura do sistema, vocês não podem retornar o conteúdo de $valor usando um return. Em outras palavras, isto significa que deve ser possível fazer o seguinte: $valor = 500; calcularValorFinal($valor, 15, false); echo $valor; // imprime 425 Assim, uma alternativa para essa situação é a extrair a função para uma biblioteca externa. b usar uma função anônima. c entender que não há solução para este problema. d passar o parâmetro valor por referência. e usar uma função recursiva. Pontuação: 1 5 O sistema está caminhando muito bem! Vocês partem para o desenvolvimento do painel administrativo, em que deve ser possível fazer upload de uma foto para o produto. Vocês chegam ao seguinte código: if(array_key_exists('foto_produto', $_FILES)){ $localAtual = $_FILES['foto_produto']['tmp_name']; $novoLocal = "./imagem_produtos/$id.jpg"; _______; } Qual deve ser o comando para mover a imagem de $localAtual para $novoLocal? a mvfile($localAtual, $novoLocal); b mv($localAtual, $novoLocal); c rename($localAtual, $novoLocal); d move($localAtual, $novoLocal); e transfer($localAtual, $novoLocal); Pontuação: 1 6 Para o sistema de descontos, vocês criam a seguinte classe: class Promocao { private $titulo; private $desconto; private $cupom; public function __construct($t, $d, $c) { $this->titulo = $t; $this->desconto = $d; $this->cupom = $c; } public function aplicarDesconto($valor){ return $valor * (100-$this->desconto)/100; } public function cupomValido($palpite){ return $palpite == $this->cupom; } Podemos dizer que as propriedades desta classe são a $t, $d e $c. b aplicarDesconto e cupomValido. c a classe não tem propriedades. d aplicarDesconto e cupomValido. e $titulo, $desconto, $cupom. Pontuação: 1 7 Você e seu colega chegaram ao seguinte código para somar os preços de um carrinho de compras: function somaCarrinho($produtos) { $soma = 0; foreach($produtos as $p){ $soma += $p['valor']; } return $soma; } $carrinho = []; $valorTotal = somaCarrinho($carrinho). No entanto, ao passar um carrinho vazio, o resultado é 0. Isso, embora correto, causa confusão com carrinhos cujo valor é realmente 0 (isto é, em que todos os produtos são gratuitos devido ao cupom). Para resolver isso, vocês alteraram a função para criar uma exception/exceção quando isso acontece: function somaCarrinho($produtos) { if(count($produtos) == 0){ throw new Exception("Carrinho vazio"); } $soma = 0; foreach($produtos as $p){ $soma += $p['valor']; } return $soma; } Agora falta envolver a chamada da função em um try/catch. Qual seria a forma adequada de fazer isso? Exceptions (Exceções). Exceções são objetos da classe Exception, qu e é uma classe especial que indica que algo fora do ideal aconteceu. Ao chamar uma função, ela pode identificar que existe um problema e qu e não é possível continuar. Assim, essa função pode, propositalmente, lançar uma exceção. Conceito: Meio certo - Pontuação: 1 Explicação: try{ $valorTotal = somaCarrinho($carrinho); } catch(Exception $e){ echo 'Carrinho vazio'; // o aluno pode inventar ou omitir a mensagem } Feedback: Queremos capturar a exceção lançada pela função somaCarrinho(). Dessa forma, basta envolver a chamada da função em um bloco try, seguido por um bloco catch, em que reagimos na eventualidade de uma exceção. Legenda: Alternativa correta Resposta do aluno
Compartilhar