4
respostas

Método "construct" - Parse error: syntax error, unexpected 'array' (T_ARRAY) in C:\wamp\www\loja\banco-produto.php on line 15

Boa tarde,

Como excedeu 5000 caracteres, não foi possível enviar a mensagem abaixo via fórum. Favor repassarem-na para os instrutores da Alura. Grato!
Depois de seguir as orientações do presente módulo, ao rodar o programa aconteceu o seguinte "bug":

Parse error: syntax error, unexpected 'array' (T_ARRAY) in C:\wamp\www\loja\banco-produto.php on line 15

Seguem abaixo os meus códigos fontes para análise:

1) Código fonte da classe "Produto" do arquivo "Produto.php":

<?php class Produto { private $id; private $nome; private $preco; private $descricao; private $categoria; private $usado; function __construct($nome, $preco, $descricao, Categoria $categoria, $usado) { $this->nome = $nome; $this->preco = $preco; $this->descricao = $descricao; $this->categoria = $categoria; $this->usado = $usado; } public function getId() { return $this->id; } public function setId($id) { $this->id = $id; } public function getNome() { return $this->nome; } public function setNome($nome) { $this->nome = $nome; } public function getPreco() { return $this->preco; } public function setPreco($preco) { $this->preco = $preco; } public function getDescricao() { return $this->descricao; } public function setDescricao($descricao) { $this->descricao = $descricao; } public function getCategoria() { return $this->categoria; } public function setCategoria($categoria) { $this->categoria = $categoria; } public function isUsado() { return $this->usado; } public function setUsado($usado) { $this->usado = $usado; } public function precoComDesconto($valor = 0.1) { if ($valor > 0 && $valor <= 0.5) { $this->preco -= $this->preco * $valor; } return $this->preco; } } ?>


2) Código fonte do arquivo "adiciona-produto.php":

<?php
require_once("cabecalho.php");
require_once("banco-produto.php");
require_once("logica-usuario.php");
require_once("class/Produto.php");
require_once("class/Categoria.php");
verificaUsuario();
$categoria = new Categoria();
$categoria->setId($_POST['categoria_id']);
$produto = new Produto();
$nome = $_POST['nome'];
$preco = $_POST['preco'];
$descricao = $_POST['descricao'];
if(array_key_exists('usado', $_POST)) {
$usado = "true";
} else {
$usado = "false";
}
$produto = new Produto($nome, $preco, $descricao, $categoria, $usado);
if(insereProduto($conexao, $produto)) { ?>
<p class="text-success">O produto <?= $produto->getNome() ?>, <?= $produto->getPreco() ?> foi adicionado.</p>
<?php
} else {
$msg = mysqli_error($conexao);
?>
<p class="text-danger">O produto <?= $produto->getNome() ?> não foi adicionado: <?= $msg?></p>
<?php
}
?>
<?php include("rodape.php"); ?>

3) Código fonte do arquivo "banco-produto.php":

<?php
require_once("conecta.php");
require_once("class/Produto.php");
require_once("class/Categoria.php");
function listaProdutos($conexao) {
$produtos = array();
$resultado = mysqli_query($conexao, "select p.*,c.nome as categoria_nome
from produtos as p join categorias as c on c.id=p.categoria_id");
while($produto_array = mysqli_fetch_assoc($resultado)) {
$categoria = new Categoria();
$categoria->setNome($produto array['categoria nome']);
4 respostas

Oi Marcello, parece que é um erro de sintaxe no arquivo banco-produto.php Pode postar o conteúdo inteiro desse arquivo?

Bom dia,

Conforme já postei anteriormente no fórum:

3) Código fonte do arquivo "banco-produto.php":

<?php
require_once("conecta.php");
require_once("class/Produto.php");
require_once("class/Categoria.php");
function listaProdutos($conexao) {
$produtos = array();
$resultado = mysqli_query($conexao, "select p.*,c.nome as categoria_nome
from produtos as p join categorias as c on c.id=p.categoria_id");
while($produto_array = mysqli_fetch_assoc($resultado)) {
$categoria = new Categoria();
$categoria->setNome($produto array['categoria nome']);

Tenta executar o código com esses ajustes:

<?php

require_once("conecta.php");
require_once("class/Produto.php");
require_once("class/Categoria.php");

function listaProdutos($conexao)
{
    $produtos = array();
    $resultado = mysqli_query($conexao, "select p.*,c.nome as categoria_nome from produtos as p join categorias as c on c.id=p.categoria_id");
    while ($produto_array = mysqli_fetch_assoc($resultado)) {
        $categoria = new Categoria();

        /* corrigi o nome da variável $produto_array */
        $categoria->setNome($produto_array['categoria_nome']);
    } /* fechei o bloco */
} /* fechei o bloco */

Ok, tentarei.

Obrigado!