Rodrigo Heringer Postado Abril 19, 2008 Denunciar Share Postado Abril 19, 2008 Olá amigos !!Estou estudando PHP com o livro PHP Programando com Orientação a Objetosdo Pablo Dall'Oglio e cheguei em uma parte em que se aborda o assunto agregação.Pois bem... Digitei os exemplos como estão no livro mas quando eu vouvisualizar os resultados dá um erro no método da classe Cesta:<?php class Cesta { private $itens; # Adiciona Ítens na cesta function AdicionaItem(Produto $item) { $this->itens[] = $item; } # Exibe a lista de produtos function ExibeLista() { foreach ($this->itens as $item) { $item->ImprimeEtiqueta(); <-- Tá dando esse erro: Call to Undefined method Produto::ImprimeEtiqueta() } } # Calcula o valor total da cesta function CalculaTotal() { foreach ($this->itens as $item) { $total += $item->preço; } return 'R$ ' . $total; } }?>A outra classe é produto:<?phpclass Produto{var $Codigo;var $Descricao;var $preço;var $Quantidade;}?>E o arquivo agregacao.php é:<?phpinclude_once('classes/Cesta.class.php');include_once('classes/Produto.class.php');$produto1 = new Produto;$produto2 = new Produto;$produto3 = new Produto;$produto4 = new Produto;$produto1-> Codigo = 1;$produto1->Descricao = 'Ameixa';$produto1->preço = 1.40;$produto1->Codigo = 2;$produto1->Descricao = 'Morango';$produto1->preço = 2.24;$produto1->Codigo = 3;$produto1->Descricao = 'Abacaxi';$produto1->preço = 2.86;$produto1->Codigo = 4;$produto1->Descricao = 'Laranja';$produto1->preço = 1.14;$cesta = new Cesta;$cesta->AdicionaItem($produto1);$cesta->AdicionaItem($produto2);$cesta->AdicionaItem($produto3);$cesta->AdicionaItem($produto4);echo $cesta->CalculaTotal();echo "<BR />\n"; //Quebra a linhaecho $cesta->ExibeLista();?>Me ajudem a descobrir qual o erro do método $item->ImprimeEtiqueta(); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Abril 20, 2008 Denunciar Share Postado Abril 20, 2008 Ele simplesmente não existe. Cade o método?Abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rodrigo Heringer Postado Abril 22, 2008 Autor Denunciar Share Postado Abril 22, 2008 Ele simplesmente não existe. Cade o método?Abraços.Olá amigo. Primeiramente, agradeço pela sua ajuda !!!Realmente é muito estranho pois esse script é o queestá no livro. Sou Superiniciante em PHP e estou começandodiretamente por OO.Estou lendo o livro e executando os exercícios para ver, comoé feito na prática, a metodologia abordada pela literatura.Como seria esse método então?Eu copiei como está no livro e o resultado deveria ser:R$ 7.64Código: 1Descrição: AmeixaCódigo: 2Descrição: MorangoCódigo: 3Descrição: AbacaxiCódigo: 4Descrição: Laranja Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Ravy Dourado Postado Junho 13, 2008 Denunciar Share Postado Junho 13, 2008 Amigo, o método ImprimeEtiqueta() está definido na página 89 do seu querido livro. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Rodrigo Heringer
Olá amigos !!
Estou estudando PHP com o livro PHP Programando com Orientação a Objetos
do Pablo Dall'Oglio e cheguei em uma parte em que se aborda o assunto agregação.
Pois bem... Digitei os exemplos como estão no livro mas quando eu vou
visualizar os resultados dá um erro no método da classe Cesta:
<?php
class Cesta
{
private $itens;
# Adiciona Ítens na cesta
function AdicionaItem(Produto $item)
{
$this->itens[] = $item;
}
# Exibe a lista de produtos
function ExibeLista()
{
foreach ($this->itens as $item)
{
$item->ImprimeEtiqueta(); <-- Tá dando esse erro: Call to Undefined method Produto::ImprimeEtiqueta()
}
}
# Calcula o valor total da cesta
function CalculaTotal()
{
foreach ($this->itens as $item)
{
$total += $item->preço;
}
return 'R$ ' . $total;
}
}
?>
A outra classe é produto:
<?php
class Produto
{
var $Codigo;
var $Descricao;
var $preço;
var $Quantidade;
}
?>
E o arquivo agregacao.php é:
<?php
include_once('classes/Cesta.class.php');
include_once('classes/Produto.class.php');
$produto1 = new Produto;
$produto2 = new Produto;
$produto3 = new Produto;
$produto4 = new Produto;
$produto1-> Codigo = 1;
$produto1->Descricao = 'Ameixa';
$produto1->preço = 1.40;
$produto1->Codigo = 2;
$produto1->Descricao = 'Morango';
$produto1->preço = 2.24;
$produto1->Codigo = 3;
$produto1->Descricao = 'Abacaxi';
$produto1->preço = 2.86;
$produto1->Codigo = 4;
$produto1->Descricao = 'Laranja';
$produto1->preço = 1.14;
$cesta = new Cesta;
$cesta->AdicionaItem($produto1);
$cesta->AdicionaItem($produto2);
$cesta->AdicionaItem($produto3);
$cesta->AdicionaItem($produto4);
echo $cesta->CalculaTotal();
echo "<BR />\n"; //Quebra a linha
echo $cesta->ExibeLista();
?>
Me ajudem a descobrir qual o erro do método $item->ImprimeEtiqueta();
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.